如何正确使用 ValueError 函数?

How can I use the ValueError function correctly?

这是我的代码:

from time import sleep

def Kontostand_Berechnen():
    if float(Kontostand_Nachfragen) >= float(Preis_Nachfragen):
        sleep(1)
        print("")
        print("Du hast genug Geld!")
        print("")
        sleep(1)
    else:
        sleep(1)
        print("")
        print("Du hast nicht genug Geld!")
        print("")
        sleep(1)

sleep(1)
print("")
Kontostand_Nachfragen = input("Wie viel Geld hast du?: ")
sleep(2)
print("")
Preis_Nachfragen = input("Wie viel kostet das Produkt?: ")
if ValueError:
    print("")
    sleep(1)
    print("Bitte nur Zahlen eingeben! Kein Text!")
    print("")
    sleep(1)
else:
    Kontostand_Berechnen()

我写这段代码只是为了练习和娱乐。印刷文本为德语。但我不认为这是阻碍。我希望如果用户写的是文本而不是数字,则会收到一条错误消息。但这并不像希望的那样工作。使用此代码,我总是会收到错误消息,即使我写数字也是如此。 (代码肯定不是很懂,我也是最近才开始用Python)

如果您想利用 ValueError,您需要使用 try/except。您将处理 except 块中的错误。一个简化的示例可能如下所示:

while True:
    try:
        Preis_Nachfragen = float(input("Wie viel kostet das Produkt?: "))
        break
    except ValueError:
        print("Bitte nur Zahlen eingeben! Kein Text!")

print(Preis_Nachfragen)

您收到错误是因为 if else 子句不用于检查错误。这就是为什么 python 有 try except clauses.

按照我在此处的回答 , you might want to take a look into to take a look into try except clause 并检查用户是否将数字作为输入。然后,您将能够处理不是数字的 input,例如:

try:
    your_input = float(input("")) # fill in with input text
except Exception as e:
    raise ValueError("") # here you fill in the message you want to give to users

然而,当您执行 float(input("message")) 时,您可以检查是否已经收到带有标准消息的 ValueError,因此使用上面的代码,您可以编辑该消息(将其放入以德语为例)。