程序工作,但TypeError:收到'int'对象不可订阅。为什么?
问题描述:
该程序检查字符串是否是回文,如果是,则返回true。当我在Python IDLE中运行它时它工作正常。但不接受在线测试网站,返回此错误:“类型错误:‘诠释’对象未标化的”程序工作,但TypeError:收到'int'对象不可订阅。为什么?
string="racecar"
def is_palindrome(string):
if string == string[::-1]:
return True
else:
return False
这是为什么?据我所知,我不用int的工作。
答
你显然希望你的函数只能对字符串进行操作,除非你使用了一个相当新的Python支持类型提示,否则你不能真正告诉Python。所以只需投下即可蝙蝠弦。几乎所有的东西都可以转换成一个字符串,然后你的函数无论传递什么东西都会起作用,或者至少抛出一个体面的错误。
def is_palindrome(string):
string = str(string) # add this line
if string == string[::-1]:
return True
else:
return False
测试位点可能是使用非字符串作为输入 –
此错误指示的“字符串”变量传递给该方法是一个整数,而不是一个串(假定在该点产生的异常) – Aviad
是否检测现场总是使用“赛车”作为输入,还是可以组成自己的输入? –