Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据计算结果检查范围内的所有数字?_Python - Fatal编程技术网

Python 如何根据计算结果检查范围内的所有数字?

Python 如何根据计算结果检查范围内的所有数字?,python,Python,所以我试着把所有的素数打印到100。以下是我目前的代码: primes = [] for num in range(100): if num > 1: for i in range(2, num): if num % i != 0: primes += [num] break else: break

所以我试着把所有的素数打印到100。以下是我目前的代码:

primes = []

for num in range(100):
    if num > 1:
        for i in range(2, num):
            if num % i != 0:
                primes += [num]
                break
            else:
                break
            
print(primes)  
但是,当我运行代码时,它只对范围内的第一次迭代进行计算(
如果num%i!=0
)(
对于范围内的i(2,num)
)。对于像15这样的数字,这是一个问题,
中范围内i的第一次迭代是2。15除以2不会得到一个整数,因此它运行
primes+=[num]
。它已经进行了第一次迭代,没有运行其余的迭代。有办法运行该范围内的所有迭代吗?

该函数可能正是您想要的

这是我的看法

def预充量(限值=100): ... 对于范围内的数字(限制): ... is_prime=all([number%除数!=0表示范围内的除数(2,number)]) ... 如果是_素数: ... 产量 ... >>>列表(素数(10)) [0, 1, 2, 3, 5, 7] >>>列表(素数(100)) [0, 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] >>>

不完整,0和1不是素数。但是我想你明白了。

你应该删除if语句中的分隔符。因为一旦条件为真,脚本就会中断。

尝试以下操作:

primes = []

for num in range(100):
    if num > 1:
        for i in range(2, num):
            if num % i == 0:
                break
        else:
            primes.append(num)

print(primes)  

只有当内部
for
循环耗尽时,代码才会执行
else
块,即完成所有迭代而不中断。

尝试适应您的方法,但我认为应该有更好的方法来解决此问题

>>> primes = []
>>> for num in range(2,100):
...     p = True
...     for i in range(2, num):
...         if num % i == 0:
...             p = False
...     if p:
...         primes += [num]
...
>>> primes
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

你的逻辑有点错误。这是你要怎么做的

primes = []

for num in range(2, 100): # 0 and 1 aren't primes
    for i in range(2, num):
        if num % i == 0:
            break
    else: # the else condition is for the for loop i.e. if it executes without break
        primes.append(num)
            
print(primes)  

如果num%i!=0:,您需要检查该数字对于该范围内的所有数字是否都是可除的(但您可以将其整除到sqrt(num)),否则程序的逻辑是错误的。