使用Python脚本给出Harshad数字的列表

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

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

在四处寻找类似的问题,但没有找到任何问题,我会尝试一下,在这里提出。我会尽量具体化。 使用Python,我试图编写一段代码,它可以遍历所有可能的Harshad数字,并在一个列表中返回Harshad数字的数量。为此,我首先提出了一个方法isHarshad,它可以判断列表中的一个数字是否是Harshad数字。然后,我实现了这个方法来只打印列表中的Hardshad数字。在

def isHarshad(i):
    l = list(str(i))
    a = sum([int(e) for e in l])
    if a == 0:
        return False
    if i % a == 0:
        return True
    else:
        return False

def ithHarshad(i):
    a = []
    count = 0
    top = 999999999
    for x in (range (1,top)):
        if isHarshad(x):
            a = a + [x]
            count += 1
            if count == i:
                print(a)
ithHarshad(25)

运行这个代码返回前25个Harshad数字,这就是我想要它做的。 现在我的问题是:有没有可能形成一个循环来检查Harshad数的一个范围,而不用像我的代码中那样生成一个“top”变量?循环到像999999这样的任意数字会感觉很混乱。在

我希望我的问题有点清楚,并提前感谢您的任何意见!在


Tags: 方法代码infalse列表forreturnif
3条回答

我不太清楚“检查范围”是什么意思。您的意思是要显示startend之间的所有Hardshad数字吗?是真的吗,你可以这样做:

def isHarshad(i):
    l = list(str(i))
    a = sum([int(e) for e in l])
    if a == 0:
        return False
    if i % a == 0:
        return True
    else:
        return False

def ithHarshad(start, end):
    a = []
    count = 0
    for x in (range (start,end)):
        if isHarshad(x):
            a = a + [x]
    print(a)

ithHarshad(50,100)

尝试用while True:替换它,并在生成足够的数字时中断循环。在您的代码中,您正在运行所有可能的数字,这是非常低效的。在

def isHarshad(i):
    l = list(str(i))
    a = sum([int(e) for e in l])
    if a == 0:
        return False
    if i % a == 0:
        return True
    else:
        return False

def ithHarshad(i):
    a = []
    count = 0
    x = 0
    while True:
        x += 1
        if isHarshad(x):
            a = a + [x]
            count += 1

        if count == i: # Breaks when enough numbers are generated.
            break
    print(a)

ithHarshad(25)

这将继续向x添加1,直到计数终止为止。在

感谢你的反馈,用了一段时间真的:为我工作。 我的解决方案是:

def isHarshad(i):
    l = list(str(i))
    a = sum([int(e) for e in l])
    if a == 0:
        return False
    if i % a == 0:
        return True
    else:
        return False

def ithHarshad(i):
    a = []
    count = 0
    x=1
    while True:
        if isHarshad(x):
            a = a + [x]
            count += 1
            x+=1
            if count == i:
                print(a)
        else:
            x+=1
ithHarshad(25)

相关问题 更多 >