Подтвердить что ты не робот

В Python, как работает цикл for с диапазоном?

for number in range(1,101): 
print number

Может кто-нибудь объяснит мне, почему приведенный выше код печатает 1-100? Я понимаю, что функция диапазона исключает последнее число в указанном диапазоне, однако, что такое "число" в синтаксисе?

Я больше привык к С++ и Java, где я бы написал код вроде:

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

Так что же такое "число"? Я уверен, что смотрю слишком далеко, и есть простой вопрос.

4b9b3361

Ответ 1

number эквивалентен i в вашем цикле С, т.е. является переменной , которая содержит значение каждой итерации цикла.

Простой перевод вашего кода Python на C приведет к чему-то в этом направлении:

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

Ответ 2

Документация Python 2.7:

диапазон ([старт], останов [, шаг]) ¶

Это универсальная функция для создания списки, содержащие арифметику прогрессий. Он чаще всего используется в для петель. Аргументы должны быть простыми целые числа. Если аргумент шага равен опущен, по умолчанию он равен 1. Если start аргумент опущен, по умолчанию до 0. Полная форма возвращает список простые целые числа [start, start + step, старт + 2 * уровень,...]. Если шаг положительный, последний элемент - это наибольший старт + я * шаг меньше, чем стоп; если шаг отрицательный, последний элемент является наименьшим началом + я * шаг больше, чем остановка. шаг не должен be zero (или ValueError поднят)

EDIT: вы также можете посмотреть xrange. EDIT: Итак, в основном:

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

Ответ 3

Как сказал JG, число - это ваша переменная (очень похожая на i в вашем C-коде). Цикл for в python действительно похож на цикл foreach в С# (я думаю, Visual С++ тоже имеет его). В принципе, он выполняет итерацию над контейнером. Таким образом, вы также можете использовать этот синтаксис со списками:

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

Объект диапазона действует как контейнер, содержащий все числа между a и b.

Ответ 4

Это немного запутанная проблема для новых программистов на Python, которые имеют опыт в объектно-ориентированных или процедурных языках (c, Java и т.д.)

Разница между этими языками заключается в том, что Python не поддерживает "counting" -like для итерации, которая постоянно используется в C, Java и т.д.:

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

В отличие от этого, Python реализует только те, которые аналогичны интерфейсу Iterator для объектно-ориентированных языков (Java-программисты будут знакомы с этим):

for object in object_list
    ....

Итак, в вашем примере "диапазон" [1,101] - это список (object_list), содержащий все числа от 1 до 100, а "число" - это итератор (объект), который заменяет каждый номер

Ответ 5

number - это переменная, в которой помещается каждое значение в диапазоне.

Диапазон

фактически возвращает итератор, а for отвечает за продвижение по диапазону.

Ответ 6

диапазон - это список чисел от 1 до 100.

number затем ссылается на каждый объект в этом списке