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: "))
        break
    except ValueError:
        if(i!=int):
            print("Must be an integer input.")
        else:
            print("Empty input.")

开始处理我的 Hangman 程序的异常,我又遇到了另一个问题。你可以运行这个程序,看看我哪里出错了。在我有这样的代码之前,我希望值错误是具体的: 除了 ValueError: print("Value error!") 但现在我希望它具体到错误是什么。因此,如果用户输入一个空输入,我希望程序告诉他们他们打印了一个空字符串。如果他们输入了一个字母,我想专门捕捉那个错误。见鬼,如果他们在列表范围之外输入一个整数,我希望有一个捕获的索引错误。

4

2 回答 2

0

i未在 except 块中定义。在尝试解析整数之前,您应该检查用户是否没有输入任何内容:

user_input = input("message")
if not user_input:
    print("Empty input.")
else:
    try:
        i = int(user_input)
        break
    except ValueError:
        print("Must be an integer input.")
于 2013-10-24T20:55:57.083 回答
0

要检查是否i为空,我首先会这样做:

answer = input()  # Save the raw answer

if answer in (None, ''):
    print('Value was empty!')
    continue

然后你可以尝试把它变成一个整数:

try:
    i = int(answer)
except ValueError:
    print('Your answer was not an integer')
    continue

最后,要检查是否i在您的单词列表中,您可以轻松地执行以下操作:

try:
    word = words[i]
except IndexError:
    print("Value was out of range!)
else:
    return word

将所有这些都放在一个函数中,您可以return word像我一样使用它来轻松退出while True循环,而不必担心中断。

于 2013-10-24T22:24:40.697 回答