首页 文章

检查字符串是否包含python中的另一个字符串

提问于
浏览
2

因此,我正在忙着制作基于交互式文本的游戏,用户可以用他/她自己的话输入答案 .

我写了一段代码来打印某些字符串,当用户输入某些单词但我无法使其工作 .

无论我输入什么,它总是打印“NOVA ENTERS THE SPACECRAFT”我做错了什么?

以下是我的代码段:

craft_cave = input(char_name + ": I should probably search the ship for supplies and explore this cave, which should I do first? ")

print("")

if "craft" or "Craft" or "ship" or "Ship" in craft_cave:
  print("NOVA ENTERS THE SPACECRAFT")
elif "cave" or "Cave" or "mountain" or "Mountain" in craft_cave:
  print("NOVA LOOKS AROUND THE CAVE")
else:
  print("Invalid answer")

4 回答

  • 2
    if "craft" or "Craft" or "ship" or "Ship" in craft_cave:
    

    被评估为

    if ("craft" or ("Craft" or ("ship" or ("Ship" in craft_cave) ) ) ):
    

    "craft" 首先被评估为布尔值,它给出 True ,所以我们有

    if (True or ("Craft" or ("ship" or ("Ship" in craft_cave) ) ) ):
    

    由于 True or x 始终为 True ,因此语句的计算结果为

    if True:
    

    所以第一个if条件总是计算为 True .

    您需要直接检查每个if条件中的每个单词

    spacecraft_keywords = ["craft", "Craft", "ship", "Ship"]
    cave_keywords = ["cave", "Cave", "mountain", "Mountain"]
    
    def contains_any(keywords, s):
        return any(keyword in s for keyword in keywords)
    
    if contains_any(spacecraft_keywords, craft_cave):
        pass
    elif contains_any(cave_keywords, craft_cave):
    ...
    
  • 1

    你需要检查一下这些词 . 尝试以下方法:

    vehicle_words = ["craft", "Craft", "ship", "Ship"]
    cave_words = ["cave", "Cave", "mountain", "Mountain"]
    if any(w in craft_cave for w in vehicle_words):
        print("NOVA ENTERS THE SPACESHIP")
    elif any(w in craft_cave for w in cave_words)
        print("NOVA LOOKS AROUND THE CAVE")
    else:
        print("Invalid Answer")
    
  • 0

    错误的条件,它检查 "craft" 的值是否为真,它是 . 你应该做这样的事情:

    if "craft" in craft_cave or "Craft" in craft_cave or "ship" in craft_cave or "Ship" in craft_cave:
        # continue
    

    更好的是:

    if any(map(lambda word: word in craft_cave, ("craft", "Craft", "ship", "Ship"))):
        # continue
    
  • 0

    更简单的方法,将所有单词放在列表中

    craft_cave = input( ": I should probably search the ship for supplies and explore 
    this cave, which should I do first? ")
    
    print("")
    list1 = ('craft', 'Craft', 'ship', 'Ship')
    list2 = ('cave', 'Cave', 'mountain', 'Mountain')  
    
    if any(word in craft_cave for word in list1):
       print("NOVA ENTERS THE SPACECRAFT")
    
    elif any(word in craft_cave for word in list2):
       print("NOVA LOOKS AROUND THE CAVE")
    
    else:
       print("invalid")
    

相关问题