python - 尝试在while循环中阻塞
问题描述
我需要使用分隔符获得精确的 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')
推荐阅读
- c# - C# ClosedXML 库插入额外的列而不影响现有公式
- python - 视图中的 for 循环
- security - 防止在未成功验证的情况下显示 UI5 应用程序内部页面
- image-processing - 插值与平均值
- python - 将 JSON 转储解码为对象
- c# - 如何从 GameObjects 网格中制作一个圆圈?
- scala - inumtable.List[Object] 找到所需的 List[Contact]
- c# - 实体未使用 Entity Framework 6 在数据库中更新
- java - Selenium 无法访问隐藏元素
- r - 努力在 shinyapps.io 中使用我自己的 API 密钥和 googlesheets4