【问题标题】:Python: try, except ValueError only works once [duplicate]Python:尝试,除了 ValueError 只工作一次[重复]
【发布时间】:2024-01-14 16:17:01
【问题描述】:

我的任务是为 Clesius 计算器制作华氏度并使用 try 和 except ValueError 函数,但我不能多次输入错误值,否则它会崩溃。我希望用户输入数字而不是字母。这就是我的代码现在的样子

print("Hej och välkommen till Fahrenheit omvandlaren")
Fahrenheit = (input("Vänligen ange grader i Fahrenheit: "))

try:
    test = float(Fahrenheit)

except ValueError:
    Fahrenheit = (input("Vänligen ange ett tal!"))

Celsius = (float(Fahrenheit)-32)*5/9
print(Fahrenheit, "Fahernheit är lika med",(round(Celsius,2)),"grader Celsius")

一般来说,我是编程新手,如果您能以简单的方式解释如何在不导致程序崩溃的情况下多次输入字符串成为可能,我将不胜感激

【问题讨论】:

  • 尽量避免将代码放在可能引发异常的except 块中。

标签: python try-catch user-input except valueerror


【解决方案1】:

你可以把输入放在一个循环中:

while True:
    fahrenheit = (input("Vänligen ange grader i Fahrenheit: "))
    try:
        test = float(fahrenheit)
        break
    except ValueError:
        pass

【讨论】:

    【解决方案2】:

    您的 except 子句要求用户输入。但是第二个输入没有经过测试。 所以在float函数中使用第二个输入时,如果输入不正确就会失败。

    如果您希望用户在输入数字之前一直输入,您将需要一个循环。 在该循环中,您将需要一个 try-except 子句(或其他一些测试)来测试输入是否为数字。

    【讨论】: