Как определить, когда ввод буквенный? - PullRequest
3 голосов
/ 19 октября 2010

Я пытался решить эту проблему некоторое время и не могу заставить ее работать правильно ... вот моя текущая работа

while True:

    guess = int(raw_input('What is your number?'))

    if 100 < guess or guess < 1:
        print '\ninvalid'

    else:
        .....continue on

Прямо сейчас я сделал это, когда пользовательский вводчисло выше 100 или ниже 1 выводит «недействительно».НО, что если я хочу сделать это так, когда пользователь вводит строку, которая не является числом (алфавитный, пунктуация и т. Д.), Он также возвращает это «неверное» сообщение?

Я думал об использовании, если нет... isdigit (), но он не будет работать, так как я получаю предположение в виде целого числа, чтобы сработал указанный диапазон.Попробуйте / исключение - еще один вариант, о котором я думал, но до сих пор не выяснил, как правильно его реализовать.

Ответы [ 2 ]

6 голосов
/ 19 октября 2010

Вы можете использовать обработку исключений:

try:
    guess = int(raw_input('What is your number?'))
    if not (1 <= guess <= 100):
        raise ValueError
    # .....continue on
except ValueError:
    print '\ninvalid'

Таким образом, \ninvalid будет напечатано, если пользователь введет нечисловую строку или введет числовую строку больше 100 или меньше 1.

РЕДАКТИРОВАТЬ: Хорошо, я согласен с синтаксисом x < y < z.Тем не менее, думаю, что он теряет часть своего обаяния при использовании с not.

5 голосов
/ 19 октября 2010
while True:
  try:
    guess = int(raw_input("..."))
  except EOFError:
    print "whoa nelly! EOF? we should probably exit"
    break  # or sys.exit, or raise a different exception,
    # or don't catch this at all, and let it percolate up,
    # depending on what you want
  except ValueError:
    print "illegal input: expected an integer"
  else:
    if not (1 <= guess <= 100):
      print "out of range"
    else:
      print "processing guess... (but if it wasn't 42, then it's wrong)"
      break  # out of while loop after processing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...