【发布时间】:2019-04-08 18:58:45
【问题描述】:
我的程序应该模拟宾果游戏。它接收一个 5X5 矩阵(宾果卡)作为输入,它应该验证它们是否在卡上的元素数量(它们是整数)以及一系列元素,一个接一个。目标是验证每个元素是否在矩阵中:如果是肯定的,程序应该用“XX”替换相应的元素。该程序应以上述方式连续进行,直到所有元素都得到验证。如果任何行、列或任一对角线的所有元素都替换为“XX”,程序将打印最终场景(矩阵的最后阶段),正确的元素替换为“XX”和单词 BINGO! ,否则只是最后的场景。 矩阵的第一行包含字母 BINGO,因此通过其对应的标签字母标识每个矩阵的列,“B”代表第一个,“I”代表第二个,依此类推,输入应该在形式: label_letter-XY,其中 X 和 Y 代表数字。 我已经设法正确打印了宾果卡,但我仍然无法遍历矩阵的行和列,验证候选编号是否在
那些列,并将它们替换为“XX”。我实际上不确定我的程序实际上在做什么,因为它只打印原始宾果卡,这让我得出结论,我没有正确访问矩阵。如果有人能给我一些关于我做错了什么的见解,我将非常感激!
m=5 #lines
n=5 #columns/rows
mat=[]
data=[]
for i in range(m):
col=input().split()
mat.append(col)
num=int(input())
blank=''
def printbingocard(mat):
print("+", end=blank)
print((16)*"-" + "+")
print("| ", end=blank)
print("B ", end=blank)
print("I ", end=blank)
print("N ", end=blank)
print("G ", end=blank)
print("O ", end=blank)
print("|")
print("+" + (16)*"=" + "+")
for i in range(m):
print("| ", end=blank)
for j in range(n):
print(mat[i][j] + " ", end='')
print("|")
print("+" + (16)*"-" + "+")
printbingocard(mat)
for i in range(num):
input=str(input()).split("-")
input_data.append(input)
for j in range(n):
if input_data[i][0]=="B":
if mat[0][j]==input_data[i][1]:
mat[0][j]="XX"
printbingocard(mat)
if input_data[i][0]=="I":
if mat[1][j]==input_data[i][1]:
mat[1][j]="XX"
printbingocard(mat)
if input_data[i][0]=="N":
if mat[2][j]==input_data[i][1]:
mat[2][j]="XX"
printbingocard(mat)
if input_data[i][0]=="G":
if mat[3][j]==input_data[i][1]:
mat[3][j]="XX"
printbingocard(mat)
if input_data[i][0]=="O":
if mat[4][j]==input_data[i][1]:
mat[4][j]="XX"
printbingocard(mat)
for i in range(m):
for j in range(n):
if mat[i][j]== "XX":
bol=True
else:
bol=False
break
for j in range(n):
for i in range(m):
if mat[i][j]== "XX":
bol=True
else:
bol=False
break
printbingocard(mat)
if bol==True:
print("BINGO!")
for j in range(n):
for i in range(m):
if mat[j][j]=="XX" or mat[i][i]=="XX":
bol=True
else:
bol=False
break
printbingocard(mat)
if bol==True:
print("BINGO!")
for j in range(4,n,-1):
for i in range(1,m,1):
if mat[i][j]=="XX":
bol=True
else:
bol=False
break
printbingocard(mat)
if bol==True:
print("BINGO!")
【问题讨论】:
-
您能否仅将相关代码作为VMCE 的一部分发布。另外,如果您要共享代码,请使用英文变量名
-
是您尝试访问矩阵的部分评论部分?如果可以取消注释您需要工作的实际代码,但添加英文 cmets 以了解这部分应该做什么。
标签: python matrix multidimensional-array nested-lists