我是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.")
你应该把你的东西从
is
改成==
:Refer to the difference between is and ==.这两个字符串在内存中不一定是同一个对象,但它们在字符方面是相同的。它有时会工作,因为string interning,这是用于提高效率的目的。你知道吗
相关问题 更多 >
编程相关推荐