python - Lo Shu Magic Square - 一直显示'false'未定义然后无效
问题描述
我希望我的代码显示所有行、列和对角线都等于 15。数字 1-9 在 3 x 3 网格中只能显示一次。
我的代码一直告诉我 false 没有定义,所以当我用大写 F 将 false 更改为“False”时,我的所有代码都显示为无效而不是有效。我的输入文件的前 3 行应该显示为有效,所以我有点困惑。
输入文件:
4 3 8 9 5 1 2 7 6
8 3 4 1 5 9 6 7 2
6 1 8 7 5 3 2 9 4
6 9 8 7 5 3 2 1 4
6 1 8 7 5 3 2 1 4
6 1 3 2 9 4 8 7 5
5 5 5 5 5 5 5 5 5
我的代码:
def contains(grid, i):
#Returns true if i appears in the grid & returns false otherwise
for row in grid:
for value in row:
if value == i:
return true
return False
def isValidMagicSquare(grid):
#make sure each # appears exactly once in grid
for i in range(1, 10):
if not contains(grid, i):
return False
#make sure rows add to 15
for row in grid:
r1 = sum(grid[0])
r2 = sum(grid[1])
r3 = sum(grid[2])
if r1 == 15 and r2 == 15 and r3 == 15:
return true
else:
return false
#Make sure columns equal 15
for column in grid:
c1 = grid[0][0]+ grid[1][0]+ grid[2][0]
c2 = grid[0][1]+ grid[1][1]+ grid[2][1]
c3 = grid[0][2]+ grid[1][2]+ grid[2][2]
if c1 == 15 and c2 == 15 and c3 == 15:
return true
else:
return false
#Make sure diagonals equal 15
for diagonal in grid:
dL = full[0][0]+ full[1][1]+ full[2][2]
dR = full[0][2]+ full[1][1]+ full[2][0]
if dL == 15 and dR == 15:
return true
else:
return false
def main():
lst = []
f = open('input.txt')
for line in f:
grid = [0, 0, 0]
grid[0] = lst[0:3]
grid[1] = lst[3:6]
grid[2] = lst[6:9]
if isValidMagicSquare(grid):
print("Valid")
else:
print("Invalid")
main()
它应该显示:
valid
valid
valid
invalid
invalid
invalid
invalid
解决方案
def main():
lst = []
f = open('input.txt')
for line in f:
grid = [0, 0, 0]
grid[0] = lst[0:3]
grid[1] = lst[3:6]
grid[2] = lst[6:9]
在这段代码中,lst
总是一个空列表。因此lst[0:3]
,lst[3:6]
和lst[6:9]
也将是空列表。也许你的意思是line[0:3]
相反?
但是,即使假设这是您的意思,您仍然需要将每个输入行转换为整数列表。尝试这个:
for line in f:
numbers = [int(n) for n in line.split()]
grid = [0, 0, 0]
grid[0] = numbers[0:3]
...
推荐阅读
- python - 无法加载原生 TensorFlow 运行时。运行 g2p-seq2seq --version 时
- android-intent - 如何从用户输入(语音)中捕获触发词?
- javascript - 如何解决 Javascript 中未定义的数组属性?
- css - 为什么我的 css 卡在不同的位置高度
- python - 如何使用此公式计算购买的每月付款?
- openstack - 在端口创建中是否可以有“条件”?
- python-3.x - 如何使用 Python 通过 IBAPI 从 TWS 导入基础数据
- python - Python - 抓取网页以获取仅在滚动后出现的信息
- go - 如何将当前时间格式化为 YYYY-MM-DDTHH:MM:SSZ
- grouping - Dask:具有 nlargest 的 Groupby 自动引入索引并且不允许 reset_index()