第9行那里,当number是3时返回的列表不应该是空的吗,那下面执行if语句不会报错吗
本帖最后由 小丑9 于 2022-3-24 17:10 编辑import math
def is_prime(number):
if number > 1:
if number == 2:
return True
if number % 2 == 0:
return False
for current in range(3, int(math.sqrt(number) + 1), 2):
if number % current == 0:
return False
return True
return False
def get_primes(number):
while True:
if is_prime(number):
yield number
number += 1
def solve():
total = 2
for next_prime in get_primes(3):
if next_prime < 2000000:
total += next_prime
else:
print(total)
return
if __name__ == '__main__':
solve()
还有第23行,get_primes()函数它返回的不是一个 int 型吗?int型不是不可迭代的吗 for 循环迭代不出元素就不会进入循环体,不进入循环体就不会执行 if 呀 isdkz 发表于 2022-3-24 17:09
for 循环迭代不出元素就不会进入循环体,不进入循环体就不会执行 if 呀
那第23行那里呢,get_primes()函数它返回的不是一个 int 型吗?int型不是不可迭代的吗 本帖最后由 isdkz 于 2022-3-24 17:15 编辑
小丑9 发表于 2022-3-24 17:11
那第23行那里呢,get_primes()函数它返回的不是一个 int 型吗?int型不是不可迭代的吗
def get_primes(number):
while True:
if is_prime(number):
yield number
number += 1
函数里面 使用到 yield ,这种函数返回的是一个生成器,生成器是可迭代的,
生成器的内容你可以看一下这个:https://fishc.com.cn/thread-60398-1-1.html isdkz 发表于 2022-3-24 17:14
def get_primes(number):
while True:
if is_prime(number):
那如果返回的number是3的话,那迭代的结果就是1,2,3吗 isdkz 发表于 2022-3-24 17:14
def get_primes(number):
while True:
if is_prime(number):
还是说那个for语句中的i就是3 小丑9 发表于 2022-3-24 17:21
还是说那个for语句中的i就是3
如果 number 是 3 的话,它会迭代出 以 3 开始的所有素数 isdkz 发表于 2022-3-24 17:23
如果 number 是 3 的话,它会迭代出 以 3 开始的所有素数
那个next_prime在get_primes迭代出的是什么呢 isdkz 发表于 2022-3-24 17:23
如果 number 是 3 的话,它会迭代出 以 3 开始的所有素数
懂了懂了,非常感谢
页:
[1]