Python罗舍魔方

2024-05-01 21:29:22 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,如果我的格式不正确,我想道歉。这是我在这个网站上的第一篇文章。我看过其他关于这方面的文章,但似乎没有一篇与我的代码需要如何输出相匹配的文章。我的代码不仅仅是说一个正方形是一个lo-she魔方。我必须显示一个3x3的表,随机数为1-9,它们的所有边都必须等于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()

Tags: 代码informain格式文章rangerandom
2条回答

分析

您的代码完全按照您的要求执行:第一行打印一次,第二行打印两次,第三行打印三次。另外,请注意,您使用变量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循环)行或列,类似于

^{pr2}$

算法

您可能会注意到,检测正方形的问题可以采取一些捷径:只有一个神奇的正方形形式;所有这些都是原始形状的旋转/反射。如果您愿意,您可以快速检查:5必须在中心,偶数必须在角落。所有9个数字都必须出现。一旦你保证了这些,你必须做最少的15次检查,我将把代数留给学生。在

一种简单的方法是通过列表理解:

import random
the_board = [[random.randint(1, 9) for i in range(3)] for b in range(3)]

这现在初始化你的董事会作为一个3x3矩阵随机值。在

相关问题 更多 >