我正在尝试使用for循环来执行此操作:当stack number = 'Stack 1'
的西装类型为'Suit A'时,它将运行card_red
函数的次数为第一个列表中的第三项(9)
game1 = \
[['Stack 1', 'Suit A', 9, 6],
['Stack 2', 'Suit B', 5, 0]]
def deal_cards():
if == 'Stack 1':
if == 'Suit A':
for i in range( ):
card_red(stack1_xpos, stack1_ypos)
那我应该在每个“ if”语句之后和range()括号中放什么?
答案 0 :(得分:2)
似乎您有一个列表列表。使用带有方括号的索引符号可访问列表的各个元素。
def deal_cards():
if game1[0][0] == 'Stack 1':
if game1[0][1] == 'Suit A':
for i in range(game1[0][2]):
card_red(stack1_xpos, stack1_ypos)
请注意,在每种情况下,我首先使用索引[0]
来访问第一个子列表,然后使用第二个索引来访问单个元素。请记住,第一项的索引为0,第二项的索引为1,依此类推。
如果要在每个子列表中重复此操作,则更容易将其作为参数传递给deal_cards
:
def deal_cards(game):
if game[0] == 'Stack 1':
if game[1]== 'Suit A':
for i in range(game[2]):
card_red(stack1_xpos, stack1_ypos)
for game in game1:
deal_cards(game)
现在请注意,该函数中只有单索引访问,而之前只有双索引访问。这是因为game
变量在调用时已经拥有一个子列表。
答案 1 :(得分:2)
您可以尝试:
game1 = [['Stack 1', 'Suit A', 9, 6],['Stack 2', 'Suit B', 5, 0]]
def deal_cards():
if game1[0][0] == "Stack1":
if game1[0][1] == "Suit A":
for i in range(game1[0][2]):
card_red(stack1_xpos, stack1_ypos)
答案 2 :(得分:2)
您可以尝试以下操作:
game1 = \
[['Stack 1', 'Suit A', 9, 6],
['Stack 2', 'Suit B', 5, 0]]
def deal_cards(arr):
if arr[0] == 'Stack 1':
if arr[1] == 'Suit A':
for i in range(arr[2]):
card_red(stack1_xpos, stack1_ypos)
for game in game1:
deal_cards(game) # you can call in this way
答案 3 :(得分:1)
您可以使用enumerate遍历项目列表,同时获得项目的位置:
game1 = \
[['Stack 1', 'Suit A', 9, 6],
['Stack 2', 'Suit B', 5, 0]]
def deal_cards():
for (idx, stack) in enumerate(game1):
if stack[0] == 'Stack 1':
if stack[1] == 'Suit A':
for i in range(stack(2)):
card_red(idx, 3)
所以您的循环将运行两次,
idx = 0
和stack = ['Stack 1', 'Suit A', 9, 6]
,idx = 1
和['Stack 2', 'Suit B', 5, 0]