我试图为一些学校作业完成一个问题,而我只是遇到了人类见过的最糟糕的脑放屁情况。这个问题要求三件事。
• 它自己读取一行上的数字N。这将是一个拉丁正方形的顺序。顺序必须是正整数,例如 N > 0。
• 它读取N 行N 的数字,即,它读取控制台输入的正方形数字。
• 它检查数字序列是否是拉丁方格。如果您的程序满足上述标准,则应显示消息“是”,否则应显示“否”。
我目前的代码是这样的:
def makelatin():
order = int(input("Enter the order of the latin square: "))
latin = [int(x) for x in input("enter the latin square with spaces inbetween the numbers: ").split()]
def checklatin(latin) :
numbers = set(range(1, len(latin) + 1))
if (any(set(row) != numbers for row in latin) or any(set(col) != numbers for col in zip(*latin))) :
print ("False")
print ("True")
checklatin(a)
所以我想到的是,做一个拉丁方块,然后检查它。我的问题是,我目前停留在 makelatin 部分。用户输入拉丁方格的顺序,然后他们在输入中输入方格。
例子:
"enter order of square" = 3
"enter the square" = 3 2 1 1 3 2 2 1 3
哪个会做一个像这样的拉丁方
3 2 1
1 3 2
2 1 3
这不需要制作一个正方形,但它确实帮助我更好地想象它。
所以我的主要问题是,有没有一种好方法可以让用户将拉丁方输入到实际的拉丁方中?
需要注意的是,我不是在寻找任何答案,我只是想要一些帮助来克服我的心理障碍。