Почему raw_input создает бесконечный цикл в этом варианте упражнения Learn Python для Hard Way? - PullRequest
5 голосов
/ 31 декабря 2011

Я пытаюсь проработать трудный путь по изучению Python и пытаюсь покопаться там, где могу, чтобы продолжить свое образование.Я подумал, что это сработает: установите raw_input, чтобы установить ограничение для цикла while, а затем позвольте циклу while выполнить ограничение, которое я установил с помощью переменной «частоты».

Это не так.Вместо этого он отправляет Python в бесконечный цикл создания списков номеров, каждый из которых на один шаг длиннее, чем последний (очень длинный) список.

В исходном коде было "while i <6" - я добавил переменную raw_input, и даже если я ввожу ту же переменную, что и в исходном коде (6), он выполняет эту операцию с бесконечным циклом,</p>

Вот полный сценарий:

i = 0 
numbers = []

print "What is the frequency?"
frequency = raw_input ('Kenneth? ')

while i < frequency:
    print "At the top i is %d" % i
    numbers.append(i)
    i = i + 1
    print "Numbers now: ", numbers
    print "At the bottom i is %d" % i

print "The numbers: "

for num in numbers: 
    print num

Извинения за максимальное невежество - у меня есть копия Python для разработки программного обеспечения передо мной в мягкой обложке прямо сейчас, и это следующийвещь в моем списке дел после LPTHW.

Ответы [ 4 ]

6 голосов
/ 31 декабря 2011

raw_input даст вам строковый объект, а не целое число. Попробуйте сделать frequency = int(frequency) перед циклом, это сделает сравнение ценным.

2 голосов
/ 31 декабря 2011
>>> 3 < '2'
0: True

Это твой намек.

1 голос
/ 31 декабря 2011

Введенное число является строкой, а не целым числом

Просто добавьте frequency = int(frequency) перед циклом while

1 голос
/ 31 декабря 2011

Поскольку raw_input приводит к строке.

>>> frequency = "10"
>>> i = 0
>>> while i < frequency:
...     i = i + 1
...     print i
...     if i > 20: break
... 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...