2013-10-25 3 views
0
print("Welcome to Hangman! Guess the mystery word with less than 6 mistakes!") 

words= ['utopian','fairy','tree','monday','blue'] 

while True: 
     try: 
       i=int(input("Please enter an integer number (0<=number<10) to choose the word in the list: ")) 
     except ValueError: 
       print("Empty input!") 
     break 
if(words[i]): 
     print("The length of the word is: " , len(words[i])) 

Так что я смог поймать ошибку значения для моей программы Hangman, которую я делаю до сих пор, но потом это произошло со мной. Он не просто улавливает ошибку значения пустого ввода, но также улавливает ошибку значения, если кто-то должен вводить нецелый символ, например алфавитную букву. Я хочу, чтобы он выполнял оба действия, так как я могу настроить другое исключение, которое будет печатать («Пожалуйста, введите целое число!»)?Ошибка обработки ошибок программа python

Проклятье, я попытался исправить программу, добавив несколько других строк, которые я придумал для программы, и добавил «break», но когда я это сделаю, я не могу ошибаться, заявляя, что «i» не определен. Теперь, если я выберу это и запустил программу, цикл продолжается, даже если пользователь вводит целое число в качестве своего ввода.

+0

Возможный дубликат [Обработка ошибок и исключений в программе пинг-понга Hangman] (http://stackoverflow.com/questions/19576384/handling-errors-and-exceptions-in-hangman-python-program) –

+0

Использование isinstance (i , int) для контроля ошибки типа. –

+0

@RobinKrahl кажется, что связанный с вами вопрос - это более старая версия этого вопроса. – minerz029

ответ

0
print("Welcome to Hangman! Guess the mystery word with less than 6 mistakes!") 

words= ['utopian','fairy','tree','monday','blue'] 

while True: 
    i=input("Please enter an integer number (0<=number<10) to choose the word in the list: ") 

    if i in (None, ""): 
     print("Null input") 
     continue 

    try: 
     i = int(i) 
    except ValueError: 
     print("Not valid integer") 
     continue 
    else: 
     if not 0 <= i < 10: 
      print("not in valid range of 0<=number<10") 
      continue 

    break 

print("You have entered", i) 
print("The word you have chosen is {} letters long".format(words[i])) 

Функция input() возвращает строку. Непосредственное преобразование этого значения в int() может оказаться неправильным, если вы хотите выполнить больше проверок. Это сначала проверяет, является ли это пустой строкой, то если это целое число, пытаясь преобразовать его в int(), тогда проверяется, находится ли это целое число в допустимом диапазоне. В конце этого значения остается действительное целое число i.

+0

Даже если я положил правильное целое число, я получаю «Не целое число!». –

+0

@ user2901609 см. Новую версию – minerz029

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