如果用户输入“完成”,我如何打破 while 循环并转到 finally 块

largest = None

smallest = None

l = []

while True:

    try:

        num = input("Enter a number: ")

    except NameError as err:

        if err == "done":

            break

        else:

            print("Invalid input")

    finally:

        l.append(num)

        l.sort()

        largest = l[-1]

        smallest = l[0]



print("Maximum", largest)

print("Minimim", smallest)


Helenr
浏览 95回答 2
2回答

一只萌萌小番薯

这段代码看起来像是针对 Python 2.x 的,它input()试图评估输入,如果您键入的字符串不是变量名,则会发出错误信号。Python 3.x 在您键入时不会发出错误信号done。所以只需比较输入。当您尝试将其转换为int.while True:    num = input("Enter a number")    if num == "done":        break    try:        num = int(num)    except ValueError:        print("Invalid input")        continue    l.append(num)l.sort()largest = l[-1]smallest = l[0]

料青山看我应如是

重构逻辑。 NameError不会发生,finally也不需要……只是在“终于”完成时将其放在外面。nums = []while True:    num = input('Enter a number or "done": ')  # num is a string at this point    if num == 'done':        break    try:        # try to convert num to integer...        num = int(num)  # This can fail with ValueError, so is in try        nums.append(num)   # This won't run if above raises exception    except ValueError:        print("Invalid input")# No need to sort...print("Maximum", max(nums)) print("Minimum", min(nums))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python