python: while цикл не проверяет условие

Вот мой код:

l=raw_input() x=l.split(' ') n=x[0] w=x[1] l=raw_input() i=0 print n while(i<n): print "1 %d" %i i=i+1 

и для ввода, как

 6 6 1 2 3 4 5 3 

Это дает ошибку времени выполнения.

Хотя n назначено 6, а i начинается с 0, почему не заканчивается, когда i = 6? Значение i возрастает больше, чем n до бесконечности.

3 Solutions collect form web for “python: while цикл не проверяет условие”

n – строка; raw_input() возвращает строки, и вы разделяете это на пробелы. i – целое число. Python не принуждает строки к целям при сравнении и всегда сортирует числа перед строками, поэтому i<n всегда True:

 >>> 6 < '6' True 

Преобразование n в целое число:

 n = int(x[0]) 
 >>> print n 6 >>> type(n) <type 'str'> >>> print 1 < n True >>> print 100 < n True 

n – строка и не должна сравниваться с числом.

Случается, что функция split() возвращает строку и в вашем состоянии

 while(i < n): 

вы сравниваете строку с целым числом. Это сравнение всегда вернет True .

Как вы можете это исправить?

Вы можете преобразовать n в целое число:

 n = int(x[0]) 

Примечание. Также помните, что raw_input() вернет строку.

Interesting Posts

Как создать список Python lambdas (в понимании списка / для цикла)?

Вычислить инверсию 2D-массивов вдоль третьей оси в трехмерном массиве без циклов

matplotlib требует pyparsing

Как отправить данные сообщения в start_urls scrapy spider

Механизируйте и красивейший суп python

Максимальный размер для модуля полки python?

PYTHON: преобразование списка кортежей в словарь

Как я могу создать слой данных (HDF5) для обучения и тестирования в одном прототипе?

Получить текущую воспроизводимую дорожку

Как форматировать время и конвертировать в gmt time?

Согласование регулярных выражений Objective-C / Swift по нескольким линиям

Python: обычный метод и статический метод с тем же именем

Как бороться с ошибками округления плавающих типов для финансовых расчетов в Python SQLite?

У iterrows проблемы с производительностью?

PyCharm предупреждает о неразрешенном модуле встроенного модуля даты и времени

Python - лучший язык программирования в мире.