该代码是一个简单的猜词游戏,有一个指定的秘密单词,用户必须在一定的尝试次数内猜出该单词。如果用户想到寻求帮助,他将得到提示。
问题出在第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!")
答案 0 :(得分:2)
您可以将选项放在列表中并使用in
if guess.lower() in ["hint", "tipp", "hinweis", "hilfe", "clue", "help", "advice"]: