我正在模拟代码以清除字符串开头的所有零。
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(最近一次调用最后一次):文件 " D:/ pyProject / LintCode& LeetCode / medium.py",第13行,in s1.eraseZero(' 000789')文件" D:/ pyProject / LintCode& LeetCode / medium.py",第8行,在eraseZero中 return eraseZero(x)NameError:全局名称' eraseZero'未定义
为什么呢?以及如何修理。提前谢谢!
答案 0 :(得分:1)
由于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'))