处理Hangman python程序中的错误和异常

时间:2013-10-24 20:50:21

标签: python exception try-catch

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:         打印(“值错误!”) 但现在我希望它具体到错误是什么。因此,如果用户输入空输入,我希望程序告诉他们他们打印了一个空字符串。如果他们输入一个按字母顺序排列的字母,我想特别注意这个错误。当我们在它的时候,如果他们输入一个超出列表范围的整数,我希望那里有一个被捕获的索引错误。

2 个答案:

答案 0 :(得分: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.")

答案 1 :(得分: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循环,而不是担心破坏。