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

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

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

Helenr 2022-07-26 09:41:31
largest = Nonesmallest = Nonel = []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)
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

这段代码看起来像是针对 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]


查看完整回答
反对 回复 2022-07-26
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

重构逻辑。 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))


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信