为什么我不应该在 Python 中将"else"与 "if" 放在同一级别



当我将else与if放在同一级别时,当我调用函数时,程序不起作用。(木星笔记本上的小星星(。但当我拔出";否则";一级之后,一切都好。该函数旨在返回在给定数字之前(包括给定数字(存在的素数的数量。这是我的代码:

def count_primes(num):
primes = list(range (3,num,2))
digit = 3
if num < 2:
return 0
while digit <= num:
for x in range (3, digit, 2):

if digit % x == 0:
primes.remove(digit)
digit += 2
break
else:
digit += 2
primes.insert(0,2)
print (primes)   
return len(primes)  

这是因为您不想在for循环中获得else。你只需要返回一次素数。

例如,如果我制作这个程序只是为了检查一个数字是否素数-

if num > 1:
# check for factors
for i in range(2,num):
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num,"is a prime number")if num > 1:
# check for factors
for i in range(2,num):
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num,"is a prime number")

附言:如果数字是一或更少,我没有包括在内。

我不想打印数字不是素数的几次。因为如果我把else放在循环中,每次失败时它都会运行。

最新更新