python递归函数与全局变量

2024-04-25 08:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在模拟代码来擦除字符串开头的所有零。你知道吗

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

我的代码:

class Solution:
    def eraseZero(self,x):
        if str(x)[0]!='0':
            x = str(x)[0:]
            return x
        else:
            x = str(x)[1:]
        return eraseZero(x)



s1 = Solution()
s1.eraseZero('000789')
print(s1.eraseZero('000789'))

但是我有个错误:

D:\Python27\python.exe D:/pyProject/LintCode&LeetCode/medium.py Traceback (most recent call last): File "D:/pyProject/LintCode&LeetCode/medium.py", line 13, in s1.eraseZero('000789') File "D:/pyProject/LintCode&LeetCode/medium.py", line 8, in eraseZero return eraseZero(x) NameError: global name 'eraseZero' is not defined

为什么?以及如何修好。谢谢提前!你知道吗


Tags: 代码pyreturnifdefpyprojectfilemedium
1条回答
网友
1楼 · 发布于 2024-04-25 08:24:52

因为eraseZero是类Solution的一部分,并且不是全局定义的,所以您应该使用该类的实例self来调用它,无论您在类内部还是外部调用它。你知道吗

class Solution:
    def eraseZero(self,x):
        if str(x)[0]!='0':
            x = str(x)[0:]
            return x
        else:
            x = str(x)[1:]
        return self.eraseZero(x) # <     -



s1 = Solution()
s1.eraseZero('000789')
print(s1.eraseZero('000789'))

相关问题 更多 >