[Tutorial básico de Python] (2): estructura de selección y estructura de bucle

Contacto QQ: 970586718

Dirección del blog: https://blog.csdn.net/m0_46521785

Seleccionar estructura

estructura de múltiples ramas

if (条件A):
	pass
elif (条件B):
	pass
elif (条件C):
	pass
elif ...:
    pass
else:
	pass

Al escribir un programa que requiere múltiples ramas, no use múltiples sustituciones if, porque el valor de la variable puede cambiarse en el primer if y conducir al segundo if.

Proceso de implementación

Al ejecutar la declaración if, la condición se calculará primero para determinar si el resultado final es Verdadero o Falso. Si es Verdadero, ingresará al bloque de programa de la declaración if; de lo contrario, se juzgará la siguiente condición.

Anidamiento condicional

Puede escribir otra declaración if para cada nivel de la declaración if, siempre que se garantice la sangría. En Python, la sangría es una relación jerárquica.

a = 1
b = 2
if a>0:
    if b<0:
        print(111)
    else:
        print(222)
else:
    if b<0:
        print(666)
    else:
        print(777)

Preguntas de practica

  • Juicio de múltiplos

    程序的功能是判断一个整数是否能被711整除,若能被711整除,则输出"Yes",否则输出"No",请补充程序。
    
  • Juicio de números primos

    输入一个数字判断它是不是素数(质数)
    
  • Ingrese los números enteros x, y, z y determine la relación entre x 3+y 3+z^3 y 1000

    输入整数x,y,z,若x^3+y^3+z^3>1000,则输出x^3+y^3+z^3-1000的结果,否则输出三个数之和。
    注:用eval()函数结合input()函数同时输入3个整数,输入数字时用逗号分隔
    
  • pregunta sobre el matrimonio

    输入年龄和性别,判断你当前的个人情况!
    男性小于30岁显示:young,30岁到36岁之间显示:marriageable age,大于36岁显示:old。
    女性小于25岁显示:young,25岁到30岁之间显示:marriageable age,大于30岁显示:old。
    

Estructura de bucle

bucle for (número conocido de bucles)

para yo en x

x aquí es un objeto iterable. ¿Qué es un objeto iterable? Significa que puede representar cada elemento por turno.

Los objetos iterables comunes incluyen cadenas, tuplas, listas, diccionarios y conjuntos.

a = 'hzau'
for i in a:
    print(i)
print('#'*30)

b = list(a)  # 创建一个列表,同时学习一下,直接对字符串使用list强制转化的话,每一个字符都对应一个元素
print(b)
for i in b:
    print(i)

rango(a,b)

El rango es un iterador: al igual que una fábrica puede producir productos, un iterador puede generar objetos iterables.

El resultado que obtiene es un objeto de rango y el contenido construido es una pseudolista de números enteros desde a (si a no está escrito, comienza desde 0 de forma predeterminada) hasta b (excluyendo b) (nombrado por el maestro Hu Bin)

¿Qué significa? Lo sabrás mirando el código a continuación.

a = range(1,10)
print(a)
print(list(a))  # 看看a里到底包含什么东西

A través de print(list(a)) podemos entender simplemente que range(1,10) es equivalente a crear una lista cuyos elementos son del 1 al 9.

for i in range(1,10):
    print(i)

para i en el rango (x)

A menudo se escribe como para i en rango(len(x)) ¿Por qué se escribe así? Porque escribo el índice y el elemento en una correspondencia uno a uno.

a = 'hzau'
for i in range(len(a)):
    print(i,a[i])

Lo que puede hacer for i en x, lo puede hacer for i in range(x), por lo que se recomienda usarlo para i in range(x), y viceversa es incorrecto.

(Piense detenidamente en esta oración, tal como lo que quiero decir a continuación: cualquier cosa que el bucle for pueda hacer, el bucle while puede hacerlo, pero lo contrario está mal)

¿Cuándo se utilizan las dos formas de for?

Sigue siendo un viejo dicho: depende del tema y la situación específica debe analizarse en detalle.

Puedes escribir el código primero y encontrar que for i en x no se puede escribir al final, luego puedes cambiarlo a for i in range(x)

Si no quieres usar tu cerebro, simplemente escríbelo en forma de for i in range(x), porque for i in range(x) puede hacer todo lo que for i in x puede hacer.

bucle while (condición de bucle conocida)

La estructura es la siguiente.

while 条件:
    循环体

Cuando se cumple la condición, se ejecutará el contenido del cuerpo del bucle, por ejemplo

x=0
while x<=5:
	print(x)
    x+=1
#结果为0 1 2 3 4 5

Bucle infinito

Cuando la condición de juicio de while es siempre Verdadera, el programa siempre estará en el bucle y no podrá ejecutar el siguiente código, de la siguiente manera

while 1:
    print(666)

Sin embargo, cuando se agrega una condición de juicio al bucle infinito, puede desempeñar un buen papel. Por ejemplo, utilizamos un bucle while en lugar de un bucle for.

mystr = 'hzau'
index = 0
while True:  # 创建死循环
    if index >= len(mystr):  # 设置跳出循环的条件
        break
    print(mystr[index])
    index += 1

Algunos estudiantes pueden ver que esto en realidad es equivalente a

mystr = 'hzau'
index = 0
while index >= len(mystr):  # 创建死循环
    print(mystr[index])
    index += 1

Sí, es cierto, pero obviamente el primer fragmento de código requiere menos cerebro y una lógica más simple.

continuar 与 romper

  • continuar es finalizar el ciclo actual, ya no ejecutar el código detrás del cuerpo del ciclo actual y continuar ejecutando el siguiente ciclo.
  • break termina todo el ciclo
for i in range(3):
    if i==1:
        continue
    print(i,666)
print('###########################')
for i in range(3):
    if i==1:
        break
    print(i,777)

Esto se describe a menudo durante los exámenes: break se utiliza para saltar del bucle más interno. Después de salir del bucle, el programa continúa ejecutándose después del código del bucle. [Esta frase es correcta]

break solo puede saltar del bucle más interno, lo que significa que solo puede finalizar la estructura del bucle más cercana a él. ¿Por qué dices más cercano? Como los bucles también se pueden anidar, lo entenderás si observas el siguiente ejemplo.

for i in range(3):
    for j in range(3):
        if j==1:
            break
        print('i=%d,j=%d'%(i,j))

Entonces, ¿qué debes hacer si quieres saltar de la capa exterior? Puedes usar el método de crear una bandera. ¿Qué es crear una bandera? Es crear una condición y juzgar cómo escribir código más adelante en función del estado de la condición. Esta función sólo puede entenderse.

flag = 1
for i in range(3):
    if not flag:  # 这么写为什么是对的呢?起到的作用和 if flag==0 一样吗?
        break
    for j in range(3):
        if j==1:
            flag = 0
            break
        print('i=%d,j=%d'%(i,j))

Elección entre bucle for y bucle while

Muchos estudiantes están muy confundidos acerca de si usar un bucle for o un bucle while en el programa. De hecho, solo recuerde una oración y estará bien.

  • Utilice el bucle for para saber el número de bucles.
  • Solo conozca la condición del bucle usando el bucle while

Lo que el bucle for puede hacer, lo puede hacer el bucle while, pero lo contrario está mal (experimentelo con atención)

De hecho, a menudo usamos bucles for cuando escribimos programas, en comparación, los bucles while se usan con menos frecuencia.

bucle for-else y bucle while-else

有个了解就可以了,知道有这么种形式,考的不是很多

Después de ejecutar el cuerpo del bucle, si no se rompe, el contenido de else continuará ejecutándose.

x=0
while x<=5:
	print(x)
    x+=1
else:
    print('进入else啦')
###########################
x=0
while x<=5:
	if x==1:
        print(i)
        break
	print(x)
    x+=1
else:
    print('进入else啦')

Preguntas de practica

Antes de hacer la pregunta, piense si está realizando un bucle un número constante de veces o si conoce las condiciones del bucle, y luego decida qué método de bucle utilizar.

  • aritmética

    已知y=1+1/3+1/5++1/2n-1:
    求y<3时的最大n值以及最大n值对应的y值(y值保留小数点后2)
  • xiaoli nadando

    小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。
    现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。
    
  • Mono come melocotón

    猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第n天吃以前发现只剩下一个桃子。
    编写程序实现:据输入的天数计算并输出猴子共摘了几个桃子
    
  • Suma

    输入一个数,判断哪三个正整数的和与这个数字相等
    

Pensando en el problema

  • ¿Qué puede representar Verdadero? ¿Puedo representar Verdadero? ¿Existe alguna otra forma de representación?

  • ¿Crees que hay algún problema con el siguiente código?

    a = 1
    print(a+True)
    
  • Cuándo usar el bucle for y cuándo usar el bucle while

  • ¿Recuerdas claramente las funciones de continuar y romper?

  • ¿Alguna vez has oído hablar de los bucles for-else y de las estructuras de bucles while-else?

  • Escribe código para resolver los siguientes problemas.

    输入一个数字n,返回n以内的斐波那契数列。
    注:斐波拉契数列由01开始,之后的数就是由之前的两数相加而得出:0, 1, 1, 2, 3, 5, 8, 13, 21
    【样例输入】(输入大于3的整数值)
    input a number please:200
    【样例输出】
    1,1,2,3,5,8,13,21,34,55,89,144,
    

Supongo que te gusta

Origin blog.csdn.net/m0_46521785/article/details/110914686#comments_28568636
Recomendado
Clasificación