2010-07-13 14 views
25
for number in range(1,101): 
print number 

¿Puede alguien explicarme por qué el código anterior imprime 1-100? Entiendo que la función de rango excluye el último número en el rango especificado, sin embargo, ¿cuál es la parte de "número" de la sintaxis?En Python, ¿cómo funciona un ciclo for con `rango`?

estoy más acostumbrado a C++ & de Java, donde me gustaría escribir el código como:

for (i = 1; i<101; i++) { 
    return i; 
    i++; 
} 

Entonces, ¿qué es 'número'? Estoy seguro de que estoy yendo demasiado lejos en esto y hay una pregunta simple.

+5

Ese fragmento de Java/C++ dejará de ejecutarse antes del primer 'i ++' debido al 'return'. – detly

Respuesta

20

number es equivalente a i en su bucle de C, es decir, es una variable que mantiene el valor de cada iteración del bucle.

una simple traducción del código Python a C resultaría en algo como lo siguiente:

for (int number = 1; number < 101; number++) { 
    printf("%d\n", number); 
} 
+0

Gracias hombre. Eso lo hace más fácil. ¿Cuál es el proceso de incremento? – TopChef

+2

range() devuelve una secuencia (una abstracción que se comporta como una lista de números), y se dice que 'para el número en ...' itera sobre la secuencia '. No existe un análogo exacto de la secuencia en la versión C, pero la relación entre los elementos de la secuencia de rango es donde ocurre el 'incremento'. –

8

Python 2.7 documentation estados:

rango ([Inicio], detener [, incremento]) ¶

Esta es una función versátil para crear listas que contienen progresiones aritméticas . Se usa con mayor frecuencia en para bucles. Los argumentos deben ser simples enteros. Si se omite el argumento de paso , se establece de manera predeterminada en 1. Si se omite el argumento de inicio , el valor predeterminado es en 0. El formulario completo devuelve una lista de enteros simples [inicio, inicio + paso, inicio + 2 * paso , ...]. Si el paso es positivo, el último elemento es mayor inicio + i * paso menor que stop; si el paso es negativo, el último elemento es el más pequeño start + i * mayor que el stop. paso no debe ser cero (o de lo contrario se eleva ValueError)

EDIT: También es posible que desee ver en xrange. EDIT: Así que, básicamente:

for (start ; stop ; step) 
range(start, stop, step) // where start and step are optional 
0

número es una variable en la que se coloca cada valor en la gama.

En realidad, el rango devuelve un iterador, y el for es responsable de avanzar dentro del rango.

0

rango es la lista de los números 1 a 100.

number a continuación hace referencia a cada objeto en esa lista

1

Como dijo JG, número es su variable (al igual que i en el código C). Un bucle for en python es realmente como un bucle foreach en C# (creo que Visual C++ también lo tiene). Básicamente, itera sobre un contenedor. Así que usted puede utilizar la sintaxis con listas también:

fib = [0,1,1,2,3,5,8] 
for number in fib: 
    print number 

objeto Una gama actúa como una especie de contenedor, que contiene todos los números entre ay b.

1

Este es un tema un poco confuso para los nuevos programadores de Python que tienen experiencia en lenguajes de procedimiento orientado a objetos o (C, Java, etc.)

La diferencia entre estos idiomas es que Python no admite un "recuento "-como para la iteración que se utiliza constantemente en C, Java, etc:

for(i = 0; i < 10; i++){ 
... 
} 

por el contrario, Python implementa sólo para los que es similar a la interfaz Iterator de los lenguajes orientados a objetos (los programadores de Java estarán familiarizados con este):

for object in object_list 
    .... 

Por lo tanto, en su ejemplo "gama" [1101] es la lista (object_list) que contiene todos los números de 1 a 100 y "número" es el iterador (objeto) que toma el lugar de cada uno número

Cuestiones relacionadas