请问我的python代码有什么问题,它总是报告文件“ lake.py”,第28行SyntaxError:语法无效。我想知道,是括号吗?或可能导致错误的原因,谢谢您的帮助
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])
答案 0 :(得分:1)
您似乎括号不正确。
arr2.append(''+str(int(n)+' ' + str(int(m)+'')
应该是
arr2.append(''+str(int(n))+' ' + str(int(m))+'')
答案 1 :(得分:0)
在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):