Python代码报错TypeError: 'int' object is not callable,求解释原因
计算字符串最后一个单词长度的代码报错原因解析
原代码
class Solution(object): def lengthOfLastWord(self,s): """ :type s: str :rtype: int """ len=0 res=0 print(len(s)) for i in range(len(s)): if s[i] != " ": len+=1 else: res=len len=0 if len!=0: return len else: res nitesh=Solution() s='Hello World' print(nitesh.lengthOfLastWord(s))
报错信息
Traceback (most recent call last): File "d:\dsa\python\58.py", line 22, in <module> print(nitesh.lengthOfLastWord(s)) File "d:\dsa\python\58.py", line 9, in lengthOfLastWord print(len(s)) TypeError: 'int' object is not callable PS D:\dsa\python>
报错原因
- 内置函数名被覆盖:你在函数内定义了名为
len的整型变量(len=0),而len是Python自带的内置函数,用来获取字符串、列表等对象的长度。当后续执行len(s)时,Python会把len识别成你定义的那个整数,而整数不能像函数一样被调用,所以触发了TypeError。 - 返回值缺失:在
else分支中,你只写了res但没有return关键字,这会导致当字符串以空格结尾时,函数不会返回res的值,而是默认返回None。
简单修正示例
把变量名len改成current_len,并补全return语句:
class Solution(object): def lengthOfLastWord(self,s): """ :type s: str :rtype: int """ current_len=0 res=0 print(len(s)) for i in range(len(s)): if s[i] != " ": current_len+=1 else: res=current_len current_len=0 if current_len!=0: return current_len else: return res nitesh=Solution() s='Hello World' print(nitesh.lengthOfLastWord(s))
内容的提问来源于stack exchange,提问作者NITESH KUMAR
相关产品推荐
相关产品推荐

