【发布时间】:2019-10-27 15:57:16
【问题描述】:
该练习要求我们检查文件中包含的数字是否为幻方。
首先,我尝试创建一个包含所有值的列表,然后将其转换为矩阵,然后检查if sum of first row == sum first column == sum of diagonal。
我的问题比练习简单多了:
列表 L 是我将修改为矩阵的列表,但我想让它干净,我成功地将其设置为 L=[7,1,2,1,1,4,"\n" and so on] 但我试图将 1,2 保存为 12 和 1, 4 等于 14。
我尝试按以下方式执行此操作,但 str 索引超出范围,这似乎很奇怪,因为我尝试以各种方式保留 indexes < than len-1。你能看看吗?
我知道可能还有其他方法可以实现该练习,但此时我感兴趣的是如何将列表 L 编辑为 LI=[7, 12, 1, 14, "\n", 2, 13, 8, 11, "\n", 16, 3, 10, 5, "\n", 9, 6, 15, 4]
L=['7', ' ', ' ', ' ', ' ', '1', '2', ' ', ' ', ' ', ' ', '1', ' ', ' ', ' ', ' ', '1', '4', '\n', '2', ' ', ' ', ' ', ' ', '1', '3', ' ', ' ', ' ', ' ', '8', ' ', ' ', ' ', ' ', '1', '1', '\n', '1', '6', ' ', ' ', ' ', ' ', '3', ' ', ' ', ' ', ' ', '1', '0', ' ', ' ', ' ', ' ', '5', '\n', '9', ' ', ' ', ' ', ' ', '6', ' ', ' ', ' ', ' ', '1', '5', ' ', ' ', ' ', ' ', '4']
LI=[ ]
j=len(L)-1
for i in range(0,j):
for el in L:
if el[i]!=" " and el[i+1]!=" ":
LI.append(el[i]*10+el[i+1])
elif el!=" ":
LI.append(el)
print(LI)
错误 -:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-164-73294659fea7> in <module>
4 for i in range(0,j):
5 for el in L:
----> 6 if el[i]!=" " and el[i+1]!=" ":
7 L.append(el[i]*10+el[i+1])
8 elif el!=" ":
IndexError: string index out of range
***
【问题讨论】:
-
欢迎来到 Stack Overflow。请修复您的代码格式,以便我们可以剪切和粘贴它。还包括错误消息的全文:包括回溯。最后,放入几个
print语句来跟踪流和数据值,这样您就可以看到程序在哪里偏离了您的预期。 -
嗨 Prune,感谢您的建议,我是新来的。我试图修复它,我希望它是可以接受的
-
@Beatrice 欢迎来到堆栈溢出,如果您正在寻找我在下面写的解决方案,请将其标记为答案,否则请评论您到底想要做什么,因为我不确定我是否正确理解您的问题。
-
问题甚至在您发布的代码之前。您应该将数字作为单独的整数读取,not 作为单个字符的列表。搜索“Python 整数输入列表”了解如何执行此操作。
-
这是您潜在问题的duplicate。