python - 有没有一种简单的方法可以将多个字符串与另一个字符串进行比较?
问题描述
该代码是一个简单的猜词游戏,有一个指定的秘密单词,用户必须在一定次数的尝试内猜测。如果用户想寻求帮助,他将得到提示。
问题出在第 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!")
解决方案
您可以将选项放在列表中并使用in
if guess.lower() in ["hint", "tipp", "hinweis", "hilfe", "clue", "help", "advice"]:
推荐阅读
- javascript - 如何有条件地移动列表元素
- java - 我如何告诉 Joda Time 我给它的时间是针对特定时区偏移量的,即使字符串中没有给出偏移量?
- c# - 奇怪的 C# 行为
- python - 如何使 DRF Serializer create() 函数仅创建一个尚不存在的条目?
- go - go 例程运行时如何从通道读取
- django - django.db.utils.OperationalError: FATAL: database does not exist (postgres / deploy to digitalocean)
- javascript - 使用jQuery的每个函数来计算具有相同类的div
- javascript - 从命令行运行时量角器示例测试失败。无法读取 unfined 的属性“$$testability”
- java - Spring Boot:可能已弃用 SpringBootServletInitializer
- python - 熊猫排序值数字负数和正数