Repeticion otra vez - johncroth/pythonEd2024 GitHub Wiki

Hay unas cosas más que discutir con la línea for i in range(0,5):.

La variable del bucle

La i en for i in range(0,5): se llama variable del bucle. Ya exploraste esto un poco en los ejercicios. Python almacena el valor actual en el rango en esta variable. La primera vez que el programa ingresa al ciclo, la computadora almacena el primer valor en el rango(0,5) (que es 0) en un lugar en la "memoria" de la computadora: el nombre i se refiere a ese lugar. La próxima vez que realiza el ciclo, Python coloca el segundo valor en el "rango" (que es "1") en el mismo lugar, por lo que el lugar al que apunta "i" ahora contiene ese valor. (Un poco más informalmente, decimos cosas como "Establecemos el valor de i en 1".) Y así sucesivamente para los otros pasos a través del bucle.

Este es sólo nuestro primer encuentro con una variable y pronto las usaremos de otras maneras. La función imprimir puede mostrarnos los valores de una variable, así como los mensajes entrecomillados que usamos anteriormente. Guarde el siguiente programa en otra_vez_a.py, ejecútelo y observe el resultado:

for i in range(0,5):
    print( "Vez numero: " )
    print( i ) 

Podemos arreglar esto un poco. La función print puede tomar tanto mensajes como variables y combinarlos en la misma línea, siempre y cuando separemos las partes con comas, así:

for i in range(0,5):
    print( "Vez numero", i, "en proceso" )

Cambie otra_vez_a.py a este formulario (prestando mucha atención a la puntuación) y ejecútelo nuevamente, corrigiendo cualquier error. Verás:

Vez numero 0 en processo
Vez numero 1 en processo
Vez numero 2 en processo
Vez numero 3 en processo
Vez numero 4 en processo

El nombre de la variable son tu elección.

¿Por qué la letra i en for i in range(0,5): y no alguna otra letra? Bueno, no hay nada especial en la letra "i" excepto que es la que yo elegí. Lo siguiente funciona exactamente igual:

for j in range(0,5):
    print( "Vez numero", j, "en proceso" )

Y también lo mismo:

for numero_de_iteracion in range(0,5):
    print( "Vez numero", numero_de_iteracion, "en proceso" )

Le damos a la "variable del bucle" su nombre en la construcción for... in, y luego ese es el nombre que debemos usar dentro el lazo. Es muy normal usar i o j o k como nombre de la variable del bucle, pero se puede elegir cualquier letra o combinación de letras (incluido el guión bajo _), pero no otros signos de puntuación ni espacios. . El nombre depende de ti... pero luego debes ceñirte a tu elección.

Rangos diferentes

Como ha visto en un ejercicio anterior, el "rango" puede estar entre dos números enteros cualesquiera, y la variable del bucle asumirá el valores respectivos. Los valores comienzan con el primer valor dado a "rango" y continúan hasta el último, pero sin incluirlo. valor.

Ejercicios:

  1. Guarde el programa a continuación como otra_vez_1.py exactamente como se muestra. Ejecuta el programa. Corrija los 4 errores uno por uno, volviendo a ejecutar el programa después de cada corrección.

    for num_concursante in range(1,4):
        print( "Hola concursante numero", num_concursante )
            print( "Como se llama?" )
    
     print( "Bienvenidos a todos nuestros concursantes" )
    
  2. A. Copie el programa completo anterior como otra_vez_2.py y el mensaje de "Hola concursante numero X" a "Jugador X, benvenido(a)". (Por supuesto, uso "X" para representar el número del jugador.

    B. Cambie el nombre de la variable del bucle de num_concursante a persona. ¡Asegúrese de que el programa se ejecute como antes!

  3. Guarde y ejecute el siguiente programa en otra_vez_3.py

    for num in range(6, 11):
        print( "Ahora el valor de la variable del bucle es", num )
    

    Ahora ejecútelo, y entonces reemplazando el rango con los siguientes rangos uno por uno. Cada vez, lea el resultado e interprete lo que ve.

    A. range(113, 119)

    B. range(1000001, 1000005)

    C. range(-5, 2)

    D. range(15, 5)

  4. Copie y pegue el siguiente programa otra_vez_4.py y ejecútelo para ver cómo dibuja un hexágono.

    from turtle import *
    
    forward(100)
    right(60)
    forward(100)
    right(60)
    forward(100)
    right(60)
    forward(100)
    right(60)
    forward(100)
    right(60)
    forward(100)
    right(60)
    

    A. Ahora, observe que esto consta de los mismos dos comandos repetidos 6 veces. Vuelva a escribir este programa en una manera mas corta usando un bucle con for i in range(0,6):.

    B. Una vez que tengas eso funcionando, cambia el rango de 0 a 8 y el ángulo de giro a 135. ¿Qué dibuja ahora?

  5. Podemos poner un bucle dentro de otro bucle, si queremos. Pero, es importante dar nombres distintos a las variables de los bucles. Guarde el programa a continuación en otra_vez_5.py y ejecútelo. (Observe que nuestro bloque de código aquí incluye otro bucle con su propio bloque de código. No hay problema; en este caso los llamamos bucles externo e interno.)

    for i in range( 10, 15 ):
       print( "El valor exterior es", i )
       for j in range( 0, 3 ):
           print( "    El valor exterior es", i, "y el interior es", j)
    

    A. Este programa imprime dos tipos de líneas, una más corta que la otra. ¿Cuántas líneas de cada tipo imprime el programa?

    B. ¿Qué sucede si cambia el nombre de la variable del bucle en el bucle interno de j a i, en conflicto con el bucle externo? (Recuerde, debe reemplazar j con i en dos lugares). ¿Se ejecuta el programa? ¿Produce la misma cantidad de mensajes de cada tipo? ¿La salida es la misma?

    C. Describa la desventaja de usar i en ambos bucles.



Menos mal no estamos aprendiendo COBOL.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-CNT PIC 9(1) VALUE 0. 

PROCEDURE DIVISION.
   A-PARA.
   PERFORM B-PARA WITH TEST AFTER UNTIL WS-CNT>3.
   STOP RUN.
   
   B-PARA.
   DISPLAY 'WS-CNT : 'WS-CNT.
   ADD 1 TO WS-CNT.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
WS-CNT : 0
WS-CNT : 1
WS-CNT : 2
WS-CNT : 3