我试图写一个基于回合的,口袋妖怪式的游戏来测试我的python技能&学习新事物。
我无法从另一个列表中的列表中选择元素。
Punch = ["Punch!", 20]
Kick = ["Kick!", 40]
Moves = [Punch, Kick]
Player = ["Jamie", 100, Moves]
print ("Do you want to punch, or kick?")
attack = input(" ")
if attack == "punch":
atk = 0
if attack == "kick":
atk = 1
damage = Player[2[atk[1]]]
print (Player[0]," uses ", Player[2[atk[0]]])
但这会导致错误: TypeError:'int'对象不可订阅
我理解为什么会发生这种错误。但我想知道是否有另一种方法可以在列表中调用列表元素。
由于
答案 0 :(得分:1)
你想要的可能是这样的:
damage = Player[2][atk][1]
但请注意,因为你只在if语句中定义了atk,因此在这些ifs之后可能无法定义atk。
此外,你将1或2放入atk,但你只有两个动作,这让我觉得你想把0或1放在其中。
注意:您不应该将变量的名称大写,因为它意味着它们是类而不是变量
答案 1 :(得分:0)
从我理解的方式
damage=Player[2][atk][1]
正如已经提到的那样。要理解的是当你这样做时发生的事情。
播放器[2]指的是Moves,当你进一步下标它时,它下载到Moves,所以player [2] [atk]只是变成Moves [atk]。
要记住的一点是,它确实只是一个参考,如果你要更改列表Moves,播放器[2]中的值也会改变。
例如: 代码:
Moves[1][2]=1000
print(player[2][1][2])
将提供输出
1000