1

以下代码不起作用。

def isPal(s):
    def checkPal(s, acc):
        if len(s) <= 1:
            return acc
        else:
            return checkPal(s[1:-1] (acc and (s[0] == s[-1])))
    return checkPal(s, True)

TypeError:“str”对象不可调用

你能告诉我,它有什么问题吗?我找不到错误。

4

2 回答 2

3

错误在这里:

return checkPal(s[1:-1] (acc and (s[0] == s[-1])))

s[1:-1]是一个字符串,后面跟它(...)被解释为一个函数调用。

可能,您想添加一个逗号并将其更改为:

return checkPal(s[1:-1], (acc and (s[0] == s[-1])))

您也可以跳过括号:

return checkPal(s[1:-1], acc and (s[0] == s[-1]))
于 2014-02-27T14:30:50.267 回答
1

您在第二个checkPal return语句中缺少逗号。这是固定版本:

checkPal(s[1:-1], (acc and (s[0] == s[-1])))

如果没有逗号,您将尝试将字符串s[1:-1]作为导致错误的函数调用。

于 2014-02-27T14:30:23.700 回答