Python 的不同异常

我正在使用 Python 热身,需要您的帮助来应用一些例外情况。这是一个简单的猜谜游戏,用户输入输入并尝试猜测生成的随机数。我正在尝试捕获用户输入从 1 到 50 的数字的异常。为此,我使用了 IndexError。这是我使用的正确错误类型吗?


我还输入了另一个异常,即 ValueError 以防止确保用户输入数字,而不是空格。


我的问题是如何抛出用户只输入 1 到 50 之间的数字的异常?



import random


number_of_guesses = 0


number = 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:

        break



if 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)


眼眸繁星
浏览 91回答 2
2回答

慕村225694

欢迎来到 SO 和 python首先,退一步了解 try/except 块的作用。try/是一个结构,其中 Python 将“尝试”执行代码块并通过将 Exception 的类型与子句except指定的错误类型相匹配来捕获任何异常(或意外错误)。exceptIndexError当您尝试索引支持索引的对象(例如 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 块的行为保持不变。

至尊宝的传说

对于索引错误,您需要索引一个列表a&nbsp;=&nbsp;[1&nbsp;,&nbsp;2,&nbsp;3] print(a[5])通过在 try 中放置语句,您可以捕获程序中的异常并可以自己处理问题,以便程序继续运行。在尝试之外会导致异常错误并且程序中止。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python