"当条件为m时,从列表中添加整数"

2024-10-01 00:28:30 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,如果我想确定前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) 

Tags: 代码inforreturnifdef数字list
3条回答

你有一个合乎逻辑的想法错误。只是改变

r.remove(y1) 

y1.remove(r) in function ithHarshad()

那就行了!你知道吗

您的代码似乎试图从整数中删除列表。在循环中交换变量名,如下所示:

if not isHarshad(x):
    y1.remove(r)

我更改了您的条件,使其更具python风格:与布尔值相比,您不必显式地编写它。因此在本例中,如果isHarshad返回True,not将其反转,下面的代码不运行,但是当它返回false时,它将反转为True,并且删除该项。你知道吗

一般来说,如果使用列表理解,就可以真正缩短代码:

def ithHarshad(n):
    return [i for i in range(1, n+1) if isHarshad(i)]

这段代码意味着它将创建一个值列表1 -> n(包含在内),并且仅当通过isHarshad过滤的结果是True时才包含该值

你在第二个循环中写反了

for r in y1:
  if isHarshad(r) == False:
     y1.remove(r) # You wrote r.remove(y1)

相关问题 更多 >