我正在使用 Python 热身,需要您的帮助来应用一些例外情况。这是一个简单的猜谜游戏,用户输入输入并尝试猜测生成的随机数。我正在尝试捕获用户输入从 1 到 50 的数字的异常。为此,我使用了 IndexError。这是我使用的正确错误类型吗?我还输入了另一个异常,即 ValueError 以防止确保用户输入数字,而不是空格。我的问题是如何抛出用户只输入 1 到 50 之间的数字的异常?import randomnumber_of_guesses = 0number = random.randint(1,50)name = input('Hi! Enter your name: ')while number_of_guesses < 8: try: guess = input("Take a guess between 1 and 50 including ") guess = int(guess) number_of_guesses+=1 guesses_left = 8 - number_of_guesses except IndexError: print('Please enter a number only between 1 and 50 including') continue except ValueError: print('Enter a number') continue if guess>number: print('Your guess is higher than the actual number',guesses_left,'guesses left') elif guess<number: print('Your guess is lower than the actual number',guesses_left,'guesses left') elif guess==number: breakif guess==number: print('Well done! You guessed the number in',number_of_guesses,'tries:')if guess != number: print('Sorry, the number I was thinking of was',number)
2 回答

慕村225694
TA贡献1880条经验 获得超4个赞
欢迎来到 SO 和 python
首先,退一步了解 try/except 块的作用。
try/是一个结构,其中 Python 将“尝试”执行代码块并通过将 Exception 的类型与子句except指定的错误类型相匹配来捕获任何异常(或意外错误)。except
IndexError当您尝试索引支持索引的对象(例如 a list)并且您指定的索引超出索引范围时会发生 An ,例如:
my_list = ["a", "b", "c"]
print(mylist[0])
# will print "a"
print(my_list[4])
# with raise in IndexError as index 4 doesn't exist.
在您的示例中,在传递非整数参数值时ValueError调用 to 引发。int因为你没有索引任何东西IndexError都没有提出。
至于将 if/else 放在 try 块之内还是之外。通过将其放在 try 块中,可以捕获 if/else 块中引发的任何异常。在这两种情况下,if/else 块的行为保持不变。

至尊宝的传说
TA贡献1789条经验 获得超10个赞
对于索引错误,您需要索引一个列表
a = [1 , 2, 3] print(a[5])
通过在 try 中放置语句,您可以捕获程序中的异常并可以自己处理问题,以便程序继续运行。
在尝试之外会导致异常错误并且程序中止。
添加回答
举报
0/150
提交
取消