我尝试了使用map和using for循环的bith方法,但它不起作用,我知道for循环必须列出、元组或字符串。那么,我如何使这项工作
一,
def narcissistic(value):
x = ((value)== sum((c)**len(value) for c in list(value)))
return x
二,
def narcissistic(value):
x=(value== (map(lambda c :sum(c**len(value)),value)))
return x
Tags:
您的问题归结为对不同对象类型的混淆。Python是一种强类型语言,因此每个对象在任何给定时刻都有一个清晰的类型,并且该语言通常不会自动将任何内容转换为另一种类型
根据您得到的错误,您正在使用
int
参数调用您的函数。当您试图调用len
或在value
上迭代时,这会给您带来麻烦。Pythonint
没有长度,也不可编辑,因此在这种情况下失败是可以理解的您要做的是创建
value
号的字符串表示形式。然后,您可以在字符串的字符上循环,并自由地获取其len
不过还有另一个问题。您还试图对生成器表达式中的
c
变量执行指数运算。这不起作用,因为c
是一个字符串,而不是一个数字。它是一个一位数的字符串,但仍然是一个str
实例!要对其进行数学运算,需要使用int
将其转换回一个数字以下是函数的固定版本:
我已经用
number
重命名了非常通用的value
名称,希望这能使每个事物的类型更加清晰相关问题 更多 >
编程相关推荐