python - 捕获异常后如何返回尝试阻止
问题描述
捕获异常后如何回到我的 try 块?下面是代码:
def main():
while True:
try:
a = int(input("Enter first value"))
except ValueError:
print("Please enter a number")
main()
try:
b= int(input("enter second value"))
except ValueError:
print("Please enter a number")
main()
因此,如果我输入一个字母而不是数字,则会捕获异常,但是如何返回在 try 块中打印语句以允许添加一个数字。我添加了 main() 命令,但它仅适用于第一个变量,因为如果异常在第二个变量中,它会返回获取第一个值的输入。
以下是上述代码的输出:
Enter first value: a
Please enter a number
Enter first value 5
Enter second value a
Please enter a number
Enter first value 5
最后一条语句应该回到第二次尝试而不是第一次。
解决方案
我会这样做:
def getn(s):
while True:
try:
a = int(input(f"Enter {s} value"))
break
except ValueError:
print("Please enter a number")
return a
def main():
while True:
a= getn("first")
b= getn("second")
main()
当然你也可以把逻辑放在 main 中..
推荐阅读
- javascript - Discord.js 参数循环未从数组中挑选
- go - 在http 503之后使用golang的Heroku“连接关闭而没有响应”H13
- python - 尝试升级 pyarrow 会导致错误
- php - Laravel SQLSTATE[HY000] [1049] 未知数据库 - 似乎没有任何效果
- laravel-7 - Laravel 7.21 ErrorException:file_put_contents():仅写入 118 个字节中的 0 个,可能是可用磁盘空间不足
- cdi - Quarkus - 将一个类变成一个 CDI bean 并在 BuildStep 中急切地实例化它
- python - Python:如何摆脱“无”
- python - 比较两个列表中元素的复杂性
- python - 循环和迭代python中的Remove()函数
- vba - Access 能否确保新的表单记录显示所有字段?