所以,如果我想确定前20个(直到20个)硬数字,我该怎么做呢?代码我只有输入,直到它达到20,而不是前20。你知道吗
def isHarshad(x):
x1 = str(x)
x2 = list(x1)
x3 = [int(i) for i in x2]
x4 = sum(x3)
if x%x4 == 0:
return True
else:
return False
def ithHarshad(n):
return [i for i in range(1, n+1) if isHarshad(i)]
ithHarshad(20)
你有一个合乎逻辑的想法错误。只是改变
至
那就行了!你知道吗
您的代码似乎试图从整数中删除列表。在循环中交换变量名,如下所示:
我更改了您的条件,使其更具python风格:与布尔值相比,您不必显式地编写它。因此在本例中,如果
isHarshad
返回True,not
将其反转,下面的代码不运行,但是当它返回false时,它将反转为True,并且删除该项。你知道吗一般来说,如果使用列表理解,就可以真正缩短代码:
这段代码意味着它将创建一个值列表
1 -> n
(包含在内),并且仅当通过isHarshad
过滤的结果是True
时才包含该值你在第二个循环中写反了
相关问题 更多 >
编程相关推荐