Python:if/whi模式中的多个条件

2024-05-17 16:18:46 发布

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

下面是一个查找数字1-20的最小公倍数的循环:

count=0

while not all(count % 1 == 0,  count % 2 == 0,
              count % 3 == 0,  count % 4 == 0,
                ...            count % 20 ==0):
     count+=1

print count

打印出这么多条件真是乏味。这需要改进,尤其是当数字大于20时。然而,作为python的新手,我下意识的反应是:

^{pr2}$

…这不起作用,因为python不能读懂思想。我考虑过在all()中放入一个列表,但是我不确定如何生成一个包含变量的列表。在

一。在

有没有一种速记法来输入这种情况的模式,或者有没有一种更聪明的方法来完成我所缺少的?在


Tags: 列表count模式not情况数字all条件
3条回答

生成器表达式:

while not all(count % i == 0 for i in range(1,21)):

顺便说一下,如果你把数字1..20分解成素数因子,这很容易用手计算出来。大约有2亿,所以循环可能需要一段时间。在

your current problem的一个更好的解决方案是使用最不常见的多重函数的一个有用的属性(假设您正确地实现了它):

lcm(a, b, c) == lcm(lcm(a, b), c)

它运行得相当快,即使对于相当大的输入(前20000个数字中最不常见的倍数为8676位):

^{pr2}$

使用generator expression

while not all(count % x == 0 for x in range(1,21)):

您也可以在此处使用^{}

^{pr2}$

因为在Python中,0的计算结果是False。在

相关问题 更多 >