python - 有没有办法从错误发生的地方继续而不是重复?
问题描述
我有这个循环
for i in range(branches):
count += 1
while True:
try:
computer = int(input('{} {} :'.format("Enter number of books for computer of branch", count)))
bookCount.append(computer)
physics = int(input('{} {} :'.format("Enter number of books for phsyics of branch", count)))
bookCount.append(physics)
chemistry = int(input('{} {} :'.format("Enter number of books for chemistry of branch", count)))
bookCount.append(chemistry)
biology = int(input('{} {} :'.format("Enter number of books for biology of branch", count)))
bookCount.append(biology)
arts = int(input('{} {} :'.format("Enter number of books for arts of branch", count)))
bookCount.append(arts)
except ValueError:
print("Input must be a number")
continue
if computer < 1:
print("Number must be at least 1")
else:
break
如果我输入说“Hello”而不是 int,try except 将捕获问题并打印错误,但将从 try 循环的顶部重新启动。有没有办法从错误发生的地方继续,或者他们都需要分开?
编辑::::
我现在尝试了几种格式化它的方法,例如下面,但它总是回到顶部输入
for i in range(branches):
count += 1
while True:
try:
computer = int(input('{} {} :'.format("Enter number of books for computer of branch", count)))
bookCount.append(computer)
try:
physics = int(input('{} {} :'.format("Enter number of books for physics of branch", count)))
bookCount.append(physics)
except ValueError:
print("Input must be a number:")
continue
except ValueError:
print("Input must be a number")
continue
if computer < 1:
print("Number must be at least 1")
else:
break
任何帮助都会很棒
解决方案
您需要在 try 块中只有一个输入才能执行您想要的操作。实现这一点的最佳方法是使用函数:
def get_input(request_string, count):
while True:
try:
value = int(input('{} {} :'.format(request_string, count)))
except ValueError:
print("Input must be a number")
continue
if value < 1:
print("Number must be at least 1")
else:
return value
for count in range(branches):
bookcount.append(get_input("Enter number of books for computer of branch", count))
bookcount.append(get_input("Enter number of books for phsyics of branch", count))
...
推荐阅读
- git - 如何在不影响其他历史记录的情况下将提交插入 git 历史记录以供参考?
- python - 有时只在 python 中播放代码
- ibm-cloud - 在 ibm cloud 上部署 composer-rest-server api -CARD NOT FOUND - {$PORT}
- html - 按钮悬停颜色更改
- python - Souped 链接神秘地缩短了?
- javascript - 如何获取 Citrix/MSTS/等。来自 Web 应用程序的 ClientName 不使用 ActiveX?
- vba - VBA:在范围内查找月份单词并将其替换为数字
- reactjs - 修复错误的 babel 依赖项后,Jest 遇到了意外的令牌
- javascript - 在渲染中反应三元
- javascript - 根据引导程序中输入的内容动态重新排序列