Python 如果用户输入“while”,如何中断while循环并转到finally块;“完成”;
重构逻辑Python 如果用户输入“while”,如何中断while循环并转到finally块;“完成”;,python,python-3.x,try-except,Python,Python 3.x,Try Except,重构逻辑NameError不会发生,而且finally不需要……只要在“finally”完成时将其放在while之外即可 这段代码看起来像是针对Python2.x的,其中input()尝试计算输入,如果键入的字符串不是变量名,则发出错误信号。当您键入done时,Python3.x不会发出错误信号 因此,只需比较输入。您可以稍后在尝试将其转换为int时执行错误检查 nums = [] while True: num = input('Enter a number or "done": '
NameError
不会发生,而且finally
不需要……只要在“finally”完成时将其放在while之外即可
这段代码看起来像是针对Python2.x的,其中
input()
尝试计算输入,如果键入的字符串不是变量名,则发出错误信号。当您键入done
时,Python3.x不会发出错误信号
因此,只需比较输入。您可以稍后在尝试将其转换为int
时执行错误检查
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))
除之外的
将如何被触发?为什么要使用finally?为什么不对“完成”处理中的最小值/最大值进行排序和计算?这是否回答了您的问题?你需要重新设计你的逻辑。namererror
永远不会发生,也永远不会等于'done'
。另外,l.sort()
和后面的所有内容都应该在循环之外。不,因为他使用ValueError,我想使用NameError作为例外。通常l.append(num)
应该在else
子句中,但是nbd@wjandrea六合一,其他六条……少了一行代码:)@AnasGhareib您使用的是哪一版本的Python?@AnasGhareib请确保您使用的是标记所指示的Python 3。
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))
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]