选择列表中列表的元素(python)

时间:2018-01-19 12:12:56

标签: python-3.x list

我试图写一个基于回合的,口袋妖怪式的游戏来测试我的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'对象不可订阅

我理解为什么会发生这种错误。但我想知道是否有另一种方法可以在列表中调用列表元素。

由于

2 个答案:

答案 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