2014-10-26 2 views
0

Я пытался различить пустой ввод от других, используя инструкцию try catch. В настоящее время у меня это есть.Используйте инструкцию try catch для пустого ввода

while True: 
    try: 
     user = int(input("Please enter an integer")) 
     break 
    except ValueError: 
     print("Must be an integer") 

Проблема возникает из-за того, что я хотел бы отдельное заявление об ошибке, если пользователь не вводит ничего, и только нажимает клавишу ввода. Тем не менее, он по-прежнему читает этот конкретный ввод как ValueError и дает мне сообщение выше независимо от того, что еще я пытаюсь.

+0

Вы можете просто проверить входные данные перед тем, как перейти к int. Если вы хотите использовать один лайнер, вы также можете сделать: int (ввод («Пожалуйста, введите целое число») + 1/0). Это приведет к увеличению ZeroDivisionError, если пустая строка. – swstephe

+0

Прошу прощения. Я немного новичок в этом. Как я могу проверить входные данные, прежде чем передать его int? – user3495234

+0

value = input («Введите целое число»); if value: user = int (значение) – swstephe

ответ

1

Вы можете проверить, есть ли string is not empty.

while True: 
    try: 
     s = input("Please enter an integer") 
     if not s: 
      print ("Input must not be empty") 
     elif not s.isdigit(): 
      print ("Input must be a digit") 
     else: 
      user = int(s) 
      break 
    except ValueError: 
     print("Must be an integer") 
+0

Спасибо. Похоже, что это работает. Хотя, если вы не возражаете, у меня был связанный с этим вопрос. Что делать, если вы хотите, чтобы пользователь вводил строку, такую ​​как буква, и возвращал ли программа ошибку, если пользователь ввел целое число? – user3495234

+0

Посмотрите на этот вопрос: http://stackoverflow.com/questions/21388541/how-do-you-check-if-a-string-contains-only-numbers-python Я обновил свой ответ. Если это ответит на ваш вопрос, отметьте мой ответ как принятый. –

Смежные вопросы