在python中查找具有特定条件的数字

2024-06-23 18:30:17 发布

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

所以我需要创建一个函数,找到最小自然数,可以除以2,3,4,5,6,7,8,9,10

到目前为止我得到的是:

def divisible():
    number= 2
    if number % 2 == 0:
        if number % 3 == 0:
            if number % 5 == 0:
                if number % 7 == 0:
                    if number % 9 == 0:
                        print number
    else:
        number = number + 2
divisible() 

所以我就这么做了:

如果自然数可以被2整除,那么它也可以被4整除,10和5也是一样,所以我把它们去掉了。然后我在检查除法是否可以完全由其他所有数字来完成。我的想法是打印出可以通过所有这些条件(如果是)的数字。你知道吗

另外,因为我要找的数字可以除以2,这意味着它必须是偶数,所以我每次都要加2。你知道吗

其思想是找到一个可以被2、3、4、5、6、7、8、9和10整除的数字,然后打印出来。你知道吗

有人能帮点忙吗?你知道吗


Tags: 函数numberifdef数字条件else思想
3条回答

每次调用divisible()时,都将number设置为2。你永远也到不了else。您需要的是在函数外部将number设置为2,然后以number作为参数在循环中调用函数,直到找到要查找的数字。你知道吗

即:

def divisible(num):
    # here code to test in num is entirely divisible by number you want
    return result # True is divisible, False if not divisible

并在循环中调用此函数:

x = 2
while not divisible(x):
     x = x + 2
print "Number " + str(x) + " is the minimum number entirely divisible by 2, 3, 4, 5, 6, 7, 8, 9 and 10." 

请注意,这不是一个最佳的算法,我发现这样的数字。你知道吗

您的代码没有在数字上循环;number保持静态,并且由于number = 2,其他测试都失败了。那是因为你没有在这里做循环。你知道吗

您还从测试中排除了错误的数字;一个可以被2整除的数字不一定可以被10整除,只有相反的数字才是真的。所以你需要在这里测试6,7,8,9和10。您可以使用all()来测试一系列数字,而不是一组嵌套的if语句:

n = 0
while True:
    n += 10
    if all(n % i == 0 for i in (6, 7, 8, 9)):
        print(n)
        break

你至少需要增加10,一旦你以10的步长增加,如果它也可以被10整除,那么测试就没有意义了。你知道吗

生成第一个这样的数字。如果需要测试一个数是否可以被所有这些因子整除,请使用%测试这5个数是否没有余数:

def is_divisible(n):
    return all(n % i == 0 for i in (6, 7, 8, 9, 10))

这起作用了:

def divisible():
residu=0
numero = 1
for x in range(1,11): #Per a cada valor en el for definim el residu
    residu = numero%x + residu
    if (residu==0):#En cas de que el residu dongui 0, creem una variable div que será el nostre número i la definim com la variable del numero que anem provant
        div = numero

while (residu != 0):#Si el residu es diferent de 0
    numero=numero+1
    residu=0
    for x in range(1,11):#Per a cad valor del for calculem el residu i el sumem als residus de les operacions anteriors
        residu = numero%x + residu
        if (residu==0):#Si el residu dona 0, el numero es la nostra solució
            div = numero
print div

可除()

相关问题 更多 >

    热门问题