为了账号安全,请及时绑定邮箱和手机立即绑定

Python 的不同异常

Python 的不同异常

眼眸繁星 2022-10-06 16:47:09
我正在使用 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 块的行为保持不变。


查看完整回答
反对 回复 2022-10-06
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

对于索引错误,您需要索引一个列表

a = [1 , 2, 3]
print(a[5])

通过在 try 中放置语句,您可以捕获程序中的异常并可以自己处理问题,以便程序继续运行。

在尝试之外会导致异常错误并且程序中止。


查看完整回答
反对 回复 2022-10-06
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号