为什么我的while循环从不出错(Python3)?

2024-06-30 05:43:25 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么我的代码不起作用?我试着翻译一些单词。如果你输入了一个“错误”的单词,就一定要这样做。它应该为您提供一个新的类型字段。如果你的话在口述中,它应该翻译出来。但是为什么它不起作用呢

bedeutungen= {"computer": "Elektronische Rechenanlage", "handy": "Kleines Funktelefon, dass man bei sich trägt", "laptop": "flacher, tragbarer, Personal Computer"}

print("Verfügbare Wörter sind: Computer, Handy, Laptop")

eingabe = str(input("Welches Wort möchten Sie wissen: "))
eingabe= eingabe.lower()  
uebersetzung = ''



while eingabe.isdigit():
    eingabe = int(eingabe)
    print("Dies ist kein Wort")
    eingabe = str(input("Welches Wort möchten Sie übersetzen: "))



while eingabe != bedeutungen:

    print("Dieses Wort ist nicht vergeben!")
    eingabe = str(input("Welches Wort möchten Sie wissen: "))


uebersetzung = bedeutungen[eingabe]
print(uebersetzung)


Tags: input单词computerprintwhilestrwortsie
3条回答

您的问题是试图将字符串与字典进行比较:

eingabe != bedeutungen:

这总是正确的,因此是一个无限的圆

您可以将其简化为:

if eingabe in bedeutungen:
    uebersetzung = bedeutungen[eingabe]
    print(uebersetzung)

如果您想使代码更短,可以将其简化为:

eingabe = str(input("Welches Wort möchten Sie wissen: ")).lower()

if eingabe in bedeutungen:
    print(bedeutungen[eingabe])

另外,最好用英语(而不是德语)命名函数和变量。您可以使用meaningstranslation,例如inpt表示eingabe

如果输入不在字典中,以下代码将再次尝试翻译:

meanings = {"computer": "Elektronische Rechenanlage",
        "handy": "Kleines Funktelefon, dass man bei sich trägt",
        "laptop": "flacher, tragbarer, Personal Computer"}


def print_translation(inpt):
    if inpt in meanings:
        print(meanings[inpt])
    elif inpt.isdigit():
        print("Dies ist kein Wort")
        inpt = str(input("Welches Wort möchten Sie übersetzen: "))
        print_translation(inpt)
    else:
        print("Dieses Wort ist nicht vergeben!")
        inpt = str(input("Welches Wort möchten Sie wissen: "))
        print_translation(inpt)


print("Verfügbare Wörter sind: Computer, Handy, Laptop")
print_translation(str(input("Welches Wort möchten Sie wissen: ")).lower())

应该是这样的:

if eingabe in bedeutungen:
    uebersetzung = bedeutungen[eingabe]
    print(uebersetzung)

这将检查eingabe是否在字典中

eingabe是字符串bedeutungen是字典,它们永远不能相等。您可能打算使用in

while not eingabe in bedeutungen:

相关问题 更多 >