python - 尝试并排除循环用户输入的覆盖
问题描述
我一直在尝试尝试并在 for 循环中除外。它按应有的方式工作,但 for 循环仅保存最后的赛车手比赛,而不是所有赛车手的比赛。我相信这是由于尝试和例外。
for name in [runner1, runner2, runner3]:
while True:
try:
race1 = int(input(name + ": Enter runner placing for race 1:"))
race2 = int(input(name + ": Enter runner placing for race 2:"))
race3 = int(input(name + ": Enter runner placing for race 3:"))
race4 = int(input(name + ": Enter runner placing for race 4:"))
except ValueError:
print("Enter a integer")
continue
break
解决方案
也许在这里进行简短的重新设计会有所帮助。
for name in [runner1, runner2, runner3]:
race = dict()
for r in range(4):
while True:
try:
race[r] = int(input("{0}: Enter runner placing for race {1}:".format(name, r+1)))
except ValueError:
print("Enter a integer")
continue
break
# do something for this particular value of race[]
# before continuing on to the next runner
如果您无法处理循环内的输入,请将它们保存在字典中。
runners = {x: None for x in [runner1, runner2, runner3]}
for name in runners.keys():
race = dict()
for r in range(4):
while True:
try:
race[r] = int(input("{0}: Enter runner placing for race {1}:".format(name, r+1)))
except ValueError:
print("Enter a integer")
continue
break
runners[name] = race
此时,runners[runner1][2]
具有runner1
比赛 3 的值(请记住 Python 数组索引是从零开始的)。
推荐阅读
- java - 在 Jboss7.x 中为 mysql 的 Http 会话持久性创建默认表时出错
- php - 如何使用 PHP 获取输入的值
- google-app-engine - Google 应用引擎,30 秒后请求超时,F2 实例
- python - 为什么这会出现超出最大尝试次数的错误?
- mysql - 针对极慢查询的 MySQL 查询优化
- python - 对加速度进行数值积分的更好方法
- python - Matplotlib:更新图形后交互式缩放工具中的错误
- c# - 为什么 NodaTime.LocalDate.MinIsoValue 有年份“9999”
- python - 如何让我的嵌套循环函数遍历整个(至少 2 个)列表变量并附加到新的列表输出?
- java - 如何在 Spring Security 中为过滤器创建自定义全局异常处理程序?