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

  • Data Modeling Advice for Blog Tagging system в Google App Engine
  • Как сохранить возвращаемое значение os.system, которое оно напечатало на stdout в python?
  • Не удалось запустить сервер devlopment - BindError: невозможно найти согласованный порт localhost
  • AttributeError: объект 'module' не имеет атрибута (при использовании cPickle)
  • Оператор python не является
  • Как получить имя открытого файла?
  • Реализация алгоритма для определения того, имеет ли строка все уникальные символы
  • Добавление StructuredProperty к модели в NDB
  •  
    Interesting Posts for Van-Lav

    Ускорение вложенного цикла

    Запрос MySQL возвращает данные (u'example ',)

    определение объектов, почему возвращается возвращаемое значение из id (…)?

    Экранная скребка в Python

    Сохранение сокета, открытого в потоке, и отправка команд из Main

    pytest: параметризованный тест с декартовым произведением аргументов

    Получение правильного локального часового пояса для отображения для конечных пользователей в веб-приложении Django

    Как я сериализую IntEnum от enum34 до json в python?

    почему только одно имя могло быть принято

    Компиляция регулярного выражения внутри функции, которая называется несколько раз

    Поиск файла и поиск точного соответствия и печати?

    Пример подклассификации string.Template в Python?

    Внешний ключ из одного приложения в другое в Django

    Модели доступа в другом проекте в представлении Django вызывают ошибку «таблица не существует»

    Использование Azure Storage SDK с Django (и полностью устранение зависимости от django-хранилищ)

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