首页 > 解决方案 > 有没有一种简单的方法可以将多个字符串与另一个字符串进行比较?

问题描述

该代码是一个简单的猜词游戏,有一个指定的秘密单词,用户必须在一定次数的尝试内猜测。如果用户想寻求帮助,他将得到提示。

问题出在第 10 行和第 11 行,我的想法是用户不必猜测“帮助”之类的确切词来获得提示,但也可以猜测它的同义词以获得相同的结果。虽然第 10 行对于这个程序来说工作得很好,但它占用了大量空间,如果你想包含更多产生提示的工作,代码会变得更加混乱。

另一方面,第 11 行根本不起作用,在想知道为什么几分钟后,我更仔细地研究了 or 运算符,发现它没有将猜测与第一个以外的其他单词进行比较,而只是检查查看布尔值是否为真。由于每个非空字符串都具有值 True 每个单词都会生成提示。

现在的问题是:是否有一种解决方法,可以将每个同义词与用户的猜测进行比较,如第 10 行,更紧凑。或者可能是一个内置函数,它可以将多个值与我没有看到的另一个值(在本例中为字符串)进行比较?

def guessing_game():
    secret_word = "Schinken"
    guess = ""
    guess_count = 0
    guess_limit = 5
    print("Guess the secret word, you have " + str(guess_limit) + " tries")
    while guess != secret_word and guess_count != guess_limit:
        guess = input("Take a guess: ")
        guess_count += 1
        if guess.lower() == "hint" or guess.lower() == "tipp" or guess.lower() == "hinweis" or guess.lower() == "hilfe" or guess.lower() == "clue" or guess.lower() == "help" or guess.lower() == "advice":
        #if guess.lower() == "hint" or "help" or "hinweis" or "hilfe" or "tipp" or "clue" or "advice":
            print("Hint: German word for Ham")
        elif guess != secret_word and guess_count < guess_limit:
            print("Sorry that is wrong, you will have to try again")

    if guess == secret_word:
        print("Congratulations, you are correct! You Win!")
    else:
        print("Sorry, you ran out of guesses. You Lose!")

标签: pythonpython-3.x

解决方案


您可以将选项放在列表中并使用in

if guess.lower() in ["hint", "tipp", "hinweis", "hilfe", "clue", "help", "advice"]:

推荐阅读