如何在带有错误处理的 for 循环中进行迭代

马丁

我正在尝试捕获用户的输入错误。输入应该是一个浮点数。我无法弄清楚逻辑。

如果用户输入无效输入,我希望用户重定向到 material_vars 中的相同键值。目前我可以让它工作,所以如果不正确,它会回到第一个键输入而不是发生无效输入的键。

def material_costs(update=False):

    global material_vars

    while update:

        try:
            for key in material_vars:
                material_vars[key] = float(input(f"Enter {key}:\n"))
        except ValueError:
            print ('Please enter a valid input')
        else:
            save_defaults('material_vars', material_vars)
            update = False

    else:
        material_vars = open_defaults('material_vars')
    return material_vars
巴维

您可以像这样修改您的功能

def material_costs(update=False):
    global material_vars
    while update:
        for key in material_vars:
            correct = False
            while (not correct):
                try:
                    material_vars[key] = float(input(f"Enter {key}:\n"))
                    correct = True
                except ValueError:
                    print ('Please enter a valid input')
                    correct = False
        save_defaults('material_vars', material_vars)
        update = False
    else:
        material_vars = open_defaults('material_vars')
    return material_vars

为每个输入运行一个 while 循环,直到用户输入正确的输入。输入将由 while 中的 try-except 块验证。

我希望这有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法知道我们在for循环中进行了多少次迭代?

如何在for循环中进行可变借借?

如何在每次迭代之间具有间隔的循环中对DOM元素进行动画处理?

使用numpy在for循环中进行多核处理

使用带有错误处理的循环从本地文件夹加载图像

带有错误处理的Python While循环

使用纯JavaScript(无JQuery /第三方库),如何串联document.getElementsByTagName中的集合以在单循环中进行迭代

在Linux中使用Shell脚本在for循环中进行迭代时,如何在文件路径中转义空格?

如何在批量收集循环中进行条件处理?

如何在for循环中进行同步延迟?

如何使用for-in语法在for循环中进行两次迭代

在Visual Studio中的循环中进行调试时,如何跳过多个循环?

如何在for循环中进行n个输入,以后再使用所有输入?

如何在for循环中进行可视化

在itertools中进行特定次数的迭代后如何中断循环?

在for循环中进行迭代时,如何更改tkinter中每个输入框的名称?

如何在JavaScript中进行正确的错误处理?

是否以及如何避免在defadvice循环中进行评估

如何在Python中进行用户输入错误处理?

如何在codeigniter php中进行连接错误处理

如何从HTML ID保存值以在for循环中进行比较

JavaScript:为什么要在循环中进行两次迭代以删除 DOM 中的所有 iframe 元素

如何在foreach循环中的每次迭代后进行延迟?

是否可以在没有错误处理程序的情况下对 CommandInvokeError 进行例外处理?

如何在 Twig 中的 for 循环中进行切割

如何在嵌套的 for of 循环中进行提取

如何在for循环中进行rbind?

如何在带有错误处理的 post/put 请求中流式传输文件?

您如何在 while 循环中进行“回溯”?