Python中的循环构造

2024-10-02 10:32:02 发布

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

我是一个pythonnoob,在设置一个循环来检查一个intz是否可以被一组数字整除,例如被1-10整除。我写了下面的代码片段,但是它们都返回X=[z的所有数字]。。。i、 e.他们不能应用if条件,以便在给定范围/集合内对所有n个模块进行检查。

X = []
z = 1
while z in range(1,1000):
    if all(z % n == 0 for n in range(1,21)):
        X.append(z) 
    z += 1

也尝试过:

^{pr2}$

以及

X = []
for z in range(1,1000000):
    if all(z % n == 0 for n in range(1,21)):
        X.append(z)  

你知道这些(或至少一个)案例出了什么问题吗? 谢谢你的帮助!


Tags: 模块代码inforifrange数字all
3条回答

编辑:是错误的,固定答案。在

你在用numpy吗?有一些有趣的事情发生在纽比和它的版本。在

import numpy as np
all( z % n for n in range(1,5)) # NameError
np.all( z % n for n in range(1,5)) # True
z = 5
all( z % n for n in range(1,5)) # False
np.all( z % n for n in range(1,5)) # True
np.all([z % n for n in range(1,5)) # False
print [z for z in range(10000) if all(z%k==0 for k in range(1,10))]
>>> [0, 2520, 5040, 7560]

似乎有用。第二个例子,我似乎没有初始化。第三种似乎有效。在

注:注意事实(21)相当大,肯定大于1000000——这不是一个完美的结果,但它可能比第一个答案低一两个因子(质数分解yadda yadda)

问题不在于Python,而在于你的数学。x % n == x如果x小于n。特别是,小于21的整数不能是小于21的每个数字的零模。3 % 18是3。所以你需要重新考虑你的要求。如果你真的想找到一个能被1到21的数整除的数,你得到的唯一的数将是巨大的数(例如,21!)。在

相关问题 更多 >

    热门问题