为什么两个不同的数字在一个元组中返回相同的字符串?

2024-10-02 08:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python编程的新手,我只是做了一些简短的游戏来更流畅地编写代码。我现在有一个“模拟”,基本上是一个基于文本的战斗之间的英雄和地精。我使用一个元组来存储移动列表,然后在一系列if语句中调用该元组中的元素。我的问题是,当用户输入数字2时,使用“药剂”移动,但当用户输入3时,也使用“药剂”移动。数字2应该触发“块”移动,但不会。我想这可能与我对元组的有限知识有关,但是有人能帮我澄清一下吗?非常感谢。代码如下。。。你知道吗

#begins battle loop
while goblin > 0:

    hmoves = ('sword',
             'shield bash',
             'block',
             'potion')

    choice = int(input("\nEnter a number 0 - 3 to choose an attack: "))

    if hmoves[choice] is 'sword':
        print(name, "attacked with his sword!")
        goblin -= 3
        print("\ngoblin used bite!")
        hero -= 2
        print("Goblin HP:", goblin, "Hero HP:", hero)
    elif hmoves[choice] is 'shield bash':
        print(name, "used shield bash!")
        goblin -= 2
        print("\ngoblin used bite!")
        hero -= 2
        print("\nGoblin HP:", goblin, "Hero HP:", hero)
    elif hmoves[choice] is 'block':
        print(name, "used block!")
        print("\ngoblin used bite!")
        print("but it was blocked.")
        hero = hero
        goblin = goblin
        print("\nGoblin HP:", goblin, "Hero HP:", hero)
    elif hmoves[choice] is 'potion':
        print(name, "used a health potion.")
        hero += 4
        print("\ngoblin used bite!")
        hero -= 2
        print("\nGoblin HP:", goblin, "Hero HP:", hero)

    #print("Goblin HP:", goblin, "Hero HP:", hero)

if goblin <= 0:
    print("Congratulations you've completed the simulation.")
else:
    print("Sorry, you did not pass the simulation.")

Tags: nameifisusedhp元组printchoice
1条回答
网友
1楼 · 发布于 2024-10-02 08:21:58

你应该把你的东西从is改成==

goblin = 20
hero = 20
name = "lol"

#begins battle loop
while goblin > 0:

    hmoves = ('sword',
             'shield bash',
             'block',
             'potion')

    choice = int(input("\nEnter a number 0 - 3 to choose an attack: "))

    if hmoves[choice] == 'sword':
        print(name, "attacked with his sword!")
        goblin -= 3
        print("\ngoblin used bite!")
        hero -= 2
        print("Goblin HP:", goblin, "Hero HP:", hero)
    elif hmoves[choice] == 'shield bash':
        print(name, "used shield bash!")
        goblin -= 2
        print("\ngoblin used bite!")
        hero -= 2
        print("\nGoblin HP:", goblin, "Hero HP:", hero)
    elif hmoves[choice] == 'block':
        print(name, "used block!")
        print("\ngoblin used bite!")
        print("but it was blocked.")
        hero = hero
        goblin = goblin
        print("\nGoblin HP:", goblin, "Hero HP:", hero)
    elif hmoves[choice] == 'potion':
        print(name, "used a health potion.")
        hero += 4
        print("\ngoblin used bite!")
        hero -= 2
        print("\nGoblin HP:", goblin, "Hero HP:", hero)

Refer to the difference between is and ==.这两个字符串在内存中不一定是同一个对象,但它们在字符方面是相同的。它有时会工作,因为string interning,这是用于提高效率的目的。你知道吗

相关问题 更多 >

    热门问题