在 while 循环中尝试块
Try block inside while loop
我需要得到精确的 4 个带分隔符的整数输入并对其执行以下操作:
((num1*num2)+num3)/num4
因此,我这里有两个错误要处理。 ValueError
和 ZeroDivisionError.
我的代码如下:
while(True):
try:
list1 = list(map(int, input("Enter comma separated values: ").split(",")))
assert (len(list1)==4)
result = (((list1[0]*list1[1])+list1[2])/list1[3])
except ValueError or ZeroDivisionError:
print("Invalid Input!")
continue
else:
break
程序应不断询问输入,直到输入有效输入。
该程序仅针对两个不正确的输入正常运行,即如果我第一次输入无效输入,它会根据需要再次要求输入。如果我再次输入无效输入,它只会打印“无效输入”但不会再次要求输入。
请分享可能是哪里的问题。
这不是您处理多个异常的方式,使用 tuple
个异常而不是 or
except (ValueError, ZeroDivisionError):
如果您想检查类型,可以使用 type()
except (ValueError, ZeroDivisionError) as e:
if type(e) is ValueError:
print("ValueError")
else:
print('ZeroDivisionError')
尝试将 ZeroDivisionError
和 ValueError
拆分为 2 个单独的 except
块。 (因为你的代码对我不起作用):
try:
list1 = list(map(int, input("Enter comma separated values: ").split(",")))
assert (len(list1)==4)
result = (((list1[0]*list1[1])+list1[2])/list1[3])
except ValueError:
print("Invalid Input!")
continue
except ZeroDivisionError:
print("Invalid Input!")
我需要得到精确的 4 个带分隔符的整数输入并对其执行以下操作:
((num1*num2)+num3)/num4
因此,我这里有两个错误要处理。 ValueError
和 ZeroDivisionError.
我的代码如下:
while(True):
try:
list1 = list(map(int, input("Enter comma separated values: ").split(",")))
assert (len(list1)==4)
result = (((list1[0]*list1[1])+list1[2])/list1[3])
except ValueError or ZeroDivisionError:
print("Invalid Input!")
continue
else:
break
程序应不断询问输入,直到输入有效输入。 该程序仅针对两个不正确的输入正常运行,即如果我第一次输入无效输入,它会根据需要再次要求输入。如果我再次输入无效输入,它只会打印“无效输入”但不会再次要求输入。 请分享可能是哪里的问题。
这不是您处理多个异常的方式,使用 tuple
个异常而不是 or
except (ValueError, ZeroDivisionError):
如果您想检查类型,可以使用 type()
except (ValueError, ZeroDivisionError) as e:
if type(e) is ValueError:
print("ValueError")
else:
print('ZeroDivisionError')
尝试将 ZeroDivisionError
和 ValueError
拆分为 2 个单独的 except
块。 (因为你的代码对我不起作用):
try:
list1 = list(map(int, input("Enter comma separated values: ").split(",")))
assert (len(list1)==4)
result = (((list1[0]*list1[1])+list1[2])/list1[3])
except ValueError:
print("Invalid Input!")
continue
except ZeroDivisionError:
print("Invalid Input!")