请问我的python代码有什么问题,它总是报告文件"lake.py",第28行语法错误:语法无效"。我想知道,是括号吗?或者可能导致错误的原因,我将不胜感激任何帮助,谢谢
def count(m, n):
if(n < m):
temp = n
n = m
m = temp
return m * (m + 1) * (2 * m + 1) / 6 + (n - m) * m * (m + 1) / 2
arr = []
arr2 = []
foo = 100
n = foo
if (n == 1):
print('1')
print('1 1')
else:
for m in range(n):
n=(((6 * foo) - (m * (m + 1) * (2 * m + 1))) / (3 * ((m * m) + m))) + m
if (count(m, n) == foo and m <= n):
arr.append(''+str(int(m))+' ' + str(int(n))+'')
if(m != n):
arr2.append(''+str(int(n)+' ' + str(int(m)+'')
arr = arr + arr2
arrLength = len(arr)
print(arrLength)
for g in range(arrLength):
print(arr[g])
您的括号似乎不合适。
arr2.append(''+str(int(n)+' ' + str(int(m)+'')
应该是
arr2.append(''+str(int(n))+' ' + str(int(m))+'')
25
行将'arr2.append(''+str(int(n)+' ' + str(int(m)+'')'
更改为arr2.append(''+str(int(n)) +' ' + str(int(m))+'')
注意:运行您的代码后,我看到一个错误
n=(((6 * foo) - (m * (m + 1) * (2 * m + 1))) / (3 * ((m * m) + m))) + m
ZeroDivisionError: division by zero
这是因为您使用foo =100
(在第 13 行中(,然后使用n = foo
所以for m in range(n):
之后循环将从0
所以 m 现在为零!
n=(((6 * foo) - (m * (m + 1) * (2 * m + 1))) / (3 * ((m * m) + m))) + m
程序将引发异常
因此,要修复此部分,您可以将for m in range(n):
更改为
for m in range(1 ,n):