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() вернет строку.

  • Python: результаты группы по временным интервалам
  • Python Итерация через список списка, чтобы создать новый список в последовательности индексов
  • Лямбда и функции в Python
  • Почему я не могу загрузить видео в Microsoft Azure API и получить правильный заголовок местоположения?
  • Итерирование по списку или одному элементу в python
  • Что означают символы% 7D в запросе url?
  • выполнение цикла while между заданным временем
  • Python может сделать список алфавитов, как Haskell?
  • python Как обрезать конечные пробелы в csv DictReader
  • Задайте имя вида независимо от имени модели (хранилище данных App Engine)
  • Исключение Python / ValueError / Обработка ошибок
  • Python - лучший язык программирования в мире.