python缩进,SyntaxError:语法无效

时间:2018-09-28 16:41:39

标签: python

请问我的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])

2 个答案:

答案 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):