【问题标题】:Why shouldn't I put the "else" same level with "if" in Python为什么我不应该在 Python 中将“else”与“if”放在同一级别
【发布时间】:2020-08-13 08:16:15
【问题描述】:

当我将 else 与 if 放在同一级别时,当我调用我的函数时程序无法运行。 (jupyter notebook 中的小星星)。但是当我将“else”拉到后面一级时,一切都很好。该函数旨在返回存在直到并包括给定数字的素数的数量。这是我的代码:

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)  

【问题讨论】:

  • 修复上述代码中的缩进
  • else 适用于for,而不是if
  • 答案是“因为那是错误的”。
  • 我编辑并修复了缩进。 @Sociopath

标签: python jupyter-notebook jupyter


【解决方案1】:

这是因为您不想在 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")

PS:如果数字是1或更少,我没有包括。

我不想多次打印 Number is not prime 。因为如果我把 else 放在循环中,每次失败都会运行。

【讨论】:

  • 是这样的:当“if”语句不为真时,for循环结束,然后跳回while循环并执行“else”而不是“for”循环,然后全部while 循环的顶部。
  • 对不起,我是编程新手,想自学,所以有时会让我感到困惑
  • 它总是从上到下,所以请记住,如果您在另一个循环中创建了 2 个循环 1,那么第一个循环将运行一次,您将进入第二个循环,它将一直运行到提到的条件然后第一个循环将增加,该过程将再次重复。你会通过一些练习得到它。
猜你喜欢
  • 2018-09-19
  • 1970-01-01
  • 2017-11-17
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多