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

时间:2020-03-03 12:49:35

标签: python python-3.x

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

问题出在第10和11行,我的想法是用户不必猜测“帮助”之类的确切字词就可以得到提示,但也可以为相同的结果猜测它的同义词。 尽管第10行对于此程序而言工作得很好,但它占用了大量空间,并且如果您想包含更多产生提示的作品,则代码将变得更加混乱。

另一方面,

第11行根本不起作用,在想了为什么几分钟之后,我更加仔细地研究了or运算符,发现它没有将猜测与第一个单词以外的其他单词进行比较,但是而是只检查布尔值是否为True。由于每个非空字符串的值都为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!")

1 个答案:

答案 0 :(得分:2)

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

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