Python 2.7.2 если / или неожиданное поведение - PullRequest
1 голос
/ 27 декабря 2011

Я сейчас изучаю Python и столкнулся с проблемой.Соблюдайте этот код:

while 1:
    print "How many lines do you want to add to this file?"

    number_of_lines = raw_input(">").strip()

    if not(number_of_lines.isdigit()) or number_of_lines > 10:
        print "Please try a number between 1 and 10 inclusive."
        continue

Код запрашивает у пользователя номер и проверяет его действительность.Однако по какой-то причине код всегда отображает ошибку, даже если пользователь вводит действительное число меньше 10.

Возможно, я где-то допустил небольшую ошибку, но не могу ее выяснить ...быть новичком в питоне!

Надеюсь, вы сможете помочь!Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 27 декабря 2011

При возврате из raw_input переменная number_of_lines представляет собой строку . Вам нужно преобразовать его в целое число перед сравнением с 10:

not(number_of_lines.isdigit()) or int(number_of_lines) > 10
3 голосов
/ 27 декабря 2011

Сначала я бы попытался преобразовать строку в целое число, поймать ошибку, если они вставят что-то еще.Это также позволяет вам отказаться от вызова isdigit.Вот так:

while 1:
    print "How many lines do you want to add to this file?"

    try:
        number_of_lines = int(raw_input(">").strip())
    except ValueError:
        print "Please input a valid number."
        continue

    if number_of_lines > 10:
        print "Please try a number between 1 and 10 inclusive."
        continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...