为什么不应该';我把这句话;否则";与“同一级别”;如果;用Python

为什么不应该';我把这句话;否则";与“同一级别”;如果;用Python,python,jupyter-notebook,jupyter,Python,Jupyter Notebook,Jupyter,当我把else与if放在同一级别时,当我调用我的函数时,程序不起作用。(jupyter笔记本中的小星星)。但是,当我把“其他”拖到后面一级时,一切都很好。函数的作用是返回给定数之前存在的素数的个数。这是我的密码: def count_primes(num): primes = list(range (3,num,2)) digit = 3 if num < 2: return 0 while digit <= num:

当我把else与if放在同一级别时,当我调用我的函数时,程序不起作用。(jupyter笔记本中的小星星)。但是,当我把“其他”拖到后面一级时,一切都很好。函数的作用是返回给定数之前存在的素数的个数。这是我的密码:

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)  
def count_prime(num):
素数=列表(范围(3,num,2))
数字=3
如果num<2:
返回0

而digit则是因为您不想在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")
注:如果数字是1或更少,我还没有包括在内


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

修复上面代码中的缩进,该缩进应用于
,而不是
,如果答案是“因为这使它出错”。我编辑并修复了缩进@反社会是这样的:for循环在“if”语句不为真时结束,然后跳回while循环并执行“else”而不是“for”循环,然后一直到while循环的顶端。对不起,我是编程新手,试图自学,因此,有时我会感到困惑,因为它总是从上到下,所以请记住,如果你在另一个循环中创建了两个循环,那么第一个循环将运行一次,而你将进入第二个循环,它将运行直到提到的条件,然后第一个循环将递增,并且该过程将再次重复。你会通过一些练习得到它的。