我正在尝试使用python创建一个程序,该程序将基于文本文件来决定一个正方形是否是幻方。你知道吗
def getRowsAndColumns(user2DimensionalList):
numberOfRows = len(user2DimensionalList)
numberOfColumns = len(user2DimensionalList[0])
return numberOfRows, numberOfColumns
def getFirstRowSum(user2DimensionalList, numberOfColumns):
firstRowSum = 0
for currentRowIndex in range(1):
for currentColumnIndex in range(numberOfColumns):
firstRowSum = firstRowSum + user2DimensionalList[currentRowIndex][currentColumnIndex]
return firstRowSum
def hasEqualRowSums(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns):
rowSum = 0
for currentRowIndex in range(numberOfRows):
for currentColumnIndex in range(numberOfColumns):
rowSum = rowSum + user2DimensionalList[currentRowIndex][currentColumnIndex]
if rowSum != firstRowSum:
return False
rowSum = 0
return True
def hasEqualColumnSums(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns):
columnSum = 0
for currentColumnIndex in range(numberOfColumns):
for currentRowIndex in range(numberOfRows):
columnSum = columnSum + user2DimensionalList[currentRowIndex][currentColumnIndex]
if columnSum != firstRowSum:
return False
columnSum = 0
return True
def hasEqualRowAndColumnSums(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns):
if hasEqualRowSums(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns) and hasEqualColumnSums(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns):
return True
else:
return False
def hasFromLeftEqualDiagonalSum(user2DimensionalList, lengthOfAnyRowOrColumn, firstRowSum):
fromLeftDiagonalSum = 0
for currentDiagonalNumberIndex in range(lengthOfAnyRowOrColumn):
fromLeftDiagonalSum = fromLeftDiagonalSum + user2DimensionalList[currentDiagonalNumberIndex][currentDiagonalNumberIndex]
if fromLeftDiagonalSum != firstRowSum:
return False
else:
return True
def hasFromRightEqualDiagonalSum(user2DimensionalList, lengthOfAnyRowOrColumn, firstRowSum):
fromRightDiagonalSum = 0
currentDiagonalNumberColumnIndex = lengthOfAnyRowOrColumn - 1
for currentDiagonalNumberRowIndex in range(lengthOfAnyRowOrColumn):
fromRightDiagonalSum = fromRightDiagonalSum + user2DimensionalList[currentDiagonalNumberRowIndex][currentDiagonalNumberColumnIndex]
currentDiagonalNumberColumnIndex = currentDiagonalNumberColumnIndex - 1
if fromRightDiagonalSum != firstRowSum:
return False
else:
return True
def hasEqualDiagonalSums(user2DimensionalList, lengthOfAnyRowOrColumn, firstRowSum):
if hasFromLeftEqualDiagonalSum(user2DimensionalList, lengthOfAnyRowOrColumn, firstRowSum) and hasFromRightEqualDiagonalSum(user2DimensionalList, lengthOfAnyRowOrColumn, firstRowSum):
return True
else:
return False
def isLoShuMagicSquare(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns, lengthOfAnyRowOrColumn):
if hasEqualRowAndColumnSums(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns) and hasEqualDiagonalSums(user2DimensionalList, lengthOfAnyRowOrColumn, firstRowSum):
return True
else:
return False
def main():
user2DimensionalList = open("input.txt", "r")
user2DimensionalList = user2DimensionalList.read()
numberOfRows, numberOfColumns = getRowsAndColumns(user2DimensionalList)
lengthOfAnyRowOrColumn = numberOfRows
firstRowSum = getFirstRowSum(user2DimensionalList, numberOfColumns)
if isLoShuMagicSquare(user2DimensionalList, firstRowSum, numberOfRows, numberOfColumns, lengthOfAnyRowOrColumn):
print("VALID")
else:
print("INVALID")
main()
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
我不知道我做错了什么我得到了这个错误:
Traceback (most recent call last):
File "/Users/noahhenkle/Desktop/MagicSquare2.py", line 98, in <module>
main()
File "/Users/noahhenkle/Desktop/MagicSquare2.py", line 91, in main
firstRowSum = getFirstRowSum(user2DimensionalList, numberOfColumns)
File "/Users/noahhenkle/Desktop/MagicSquare2.py", line 12, in getFirstRowSum
firstRowSum = firstRowSum + user2DimensionalList[currentRowIndex][currentColumnIndex]
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我几乎可以肯定的代码是正确的,但txt文件是混乱的一切。 我在下面包括了回溯。你知道吗
非常简单,您读入一堆字符数据,而从不转换为整数。然后尝试对数据执行算术运算,从整数值0开始。你知道吗
在某个时刻,你必须转换你的值。目前,您有一个126x1“2Dim列表”。对行求和的尝试从尝试添加
0 + "4"
开始。你知道吗我强烈建议您恢复到增量编程。您发布了100行代码,但没有测试为程序其余部分提供信息的输入。你知道吗
相关问题 更多 >
编程相关推荐