首先,如果我的格式不正确,我想道歉。这是我在这个网站上的第一篇文章。我已经查看过有关此内容的其他帖子,但似乎没有一个符合我的代码需要输出的方式。我的代码必须不仅仅是说广场是一个魔方。我必须显示一个随机数为1-9的3x3表,并且它们必须在所有方面都等于15。目前我正在尝试设置我的表并将其与我的其余代码相关联,这将决定广场是什么。目前我在设置表时遇到问题,而不是3x3,它显示为6x3。再次,我为没有正确格式化我的帖子而道歉。
def main(): #Parent Function
import random
#****************************************************
square_1 = random.randint(1, 9)
square_2 = random.randint(1, 9)
square_3 = random.randint(1, 9)
square_4 = random.randint(1, 9)
square_5 = random.randint(1, 9)
square_6 = random.randint(1, 9)
square_7 = random.randint(1, 9)
square_8 = random.randint(1, 9)
square_9 = random.randint(1, 9)
Grid_1 = [square_1 ,'\t', square_2 ,'\t', square_3]
Grid_2 = [square_4 ,'\t', square_5 ,'\t', square_6]
Grid_3 = [square_7 ,'\t', square_8 ,'\t', square_9]
for i in range(1):
print (','.join(str(i) for i in Grid_1))
for i in range(2):
print (','.join(str(i) for i in Grid_2))
for i in range(3):
print (','.join(str(i) for i in Grid_3))
main()
答案 0 :(得分:1)
<强>分析强>:
您的代码完全按照您的要求执行操作:打印第一行一次,第二行打印两次,第三行打印3次。另请注意,您使用变量 i 作为循环索引,但 mis 再次将其用作print语句中的索引。
立即修复:
根本不要使用这些循环:每行打印一次:
Grid_1 = [square_1 ,'\t', square_2 ,'\t', square_3]
Grid_2 = [square_4 ,'\t', square_5 ,'\t', square_6]
Grid_3 = [square_7 ,'\t', square_8 ,'\t', square_9]
print (','.join(str(i) for i in Grid_1))
print (','.join(str(i) for i in Grid_2))
print (','.join(str(i) for i in Grid_3))
总体维修:
将您的电路板开发为3x3嵌套列表(将其视为二维矩阵)。看到答案Ajax1234发布了一个很好的方法来处理它。使用此组织,您可以轻松地通过行或列迭代(运行 for 循环),例如
for row in range(3):
if sum([board[row][col] for col in range(3)]) != 15:
... board failed
<强>算法强>
你可能会注意到,检测方块的问题可以采取一些捷径:只有一个 Lo She魔方形式;所有这些都是原始的旋转/反射。如果您愿意,可以快速检查: 5 必须位于中心,偶数必须在拐角处。必须出现所有9个数字。一旦你保证了这些,你必须做的事情只有少量的15次检查 - 我将把这个代数留给学生。
答案 1 :(得分:0)
一种简单的方法是通过列表理解:
import random
the_board = [[random.randint(1, 9) for i in range(3)] for b in range(3)]
现在将您的电路板初始化为具有随机值的3x3矩阵。