我正在尝试创建一个存储卡游戏,在其中我创建一个卡片矩阵并使用用户输入。用户输入矩阵的行和列,匹配它们会从矩阵中删除卡片。我创建了一个矩阵,用户可以在其中选择卡片,但是我在创建删除匹配对的函数时遇到问题。
import random
matrix = None
def create_deck():
ranks = ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
suits = ['♠', '♥', '♣', '♦']
deck = []
for rank in ranks:
for suit in suits:
card = str(rank) + suit
deck.append(card)
random.shuffle(deck)
global matrix
matrix = [[[random.choice(deck), '🂮'] for i in range(13)]for j in range(4)]
count = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
for i in count:
print(i, end=' ')
print('')
for i in range(len(matrix)):
for j in range(len(matrix[0])):
print((matrix[i][j][1]), end = ' ')
print('')
def get_card():
row_input = input("Enter row of desired card")
col_input = input("Enter column of desired card")
global row
global col
row = int(row_input)
col = int(col_input)
return matrix[row][col][0]
def remove_pairs():
matrix[row][col].pop()
for i in range(len(matrix)):
for j in range(len(matrix[0])):
print((matrix[i][j][1]), end = ' ')
print('')
if __name__=="__main__":
create_deck()
p1_score = 0
p2_score = 0
card1 = None
card2 = None
while True:
card1 = get_card()
card2 = get_card()
pop()
指定的卡后,它要么返回None
,要么返回列表索引错误。我在remove_pairs()
函数中做错了什么?
当你从牌组中弹出卡时,matrix[row][col]
中的物品最初是("牌","🂮"),之后它变成了("牌")。因此,当您尝试打印矩阵并找到matrix[i=row][j=col][1]
时,该项目只有一个元素,并且您正在尝试访问第二个元素,并且由于它不存在,因此它为您提供了一个IndexError
。以下是该问题的建议解决方案:
def remove_pairs():
matrix[row][col].pop()
for i in range(len(matrix)):
for j in range(len(matrix[0])):
try:
print((matrix[i][j][1]), end = ' ')
except IndexError:
print(" ")
print('')