Обычный способ для достижения этой цели является использование int()
с обработкой исключений:
>>> n = None
>>> while n is None:
... a = raw_input("Enter a number: ")
... try:
... n = int(a)
... except ValueError:
... print "Not a number."
...
Enter a number: abc
Not a number.
Enter a number: cauliflowers are my favourite vegetable
Not a number.
Enter a number: 12
>>>
Однако, если вы предпочитаете, чтобы избежать обработки исключений вы можете принять следующий подход. Обратите внимание, что оно не принимает отрицательные числа, а только натуральные числа 0, 1, 2, ..., N
:
>>> while True:
... a = raw_input("Enter a number: ")
... if a.isdigit():
... break
... print "Not a number."
...
Enter a number: I like beetroot too
Not a number.
Enter a number: -500
Not a number.
Enter a number: 500
>>>
Это становится немного сложнее обрабатывать отрицательные числа таким образом, требуя три случая, один для пустых строк, один для отрицательных чисел и один для натуральных чисел:
>>> while True:
... a = raw_input("Enter a number: ")
... if len(a) > 0 and ((a[0] == '-' and a[1:].isdigit()) or a.isdigit()):
... break
... print "Not a number."
...
Enter a number: Celery stinks.
Not a number.
Enter a number:
Not a number.
Enter a number: -
Not a number.
Enter a number: 1
>>>
мой ответ никакой пользы для вас я буду удалять его, если вы хотите только положительные числа не выбрать один из ответов, которые используют 'isdigit()', надеюсь, что я сделал помочь в этот раз:) – mouad
Я думаю, что мой вопрос был плохо сформулирован, что смутил всех -_-. Спасибо за вашу помощь! – super9