开阳与芒 发表于 2022-5-19 11:03:32

求大佬解惑 缩进和地板除问题

萌新刚学习 有两个问题 求大佬解惑
1.为什么求素数这里需要地板除呢?我改成了除,为啥多了.00
2.还有那个if 和else不是两种情况吗 为什么缩进不一样呀


标准
for n in range(2,10):
    for x in range(2,n):
      if n % x == 0:
            print(n,"=",x,"*",n//x)
            break
    else:
      print(n,"是一个素数")

      
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3


第一种
for n in range(2,10):
    for x in range(2,n):
      if n % x == 0:
            print(n,"=",x,"*",n/x)
            break
      else:
            print(n,"是一个素数")

            
3 是一个素数
4 = 2 * 2.0
5 是一个素数
5 是一个素数
5 是一个素数
6 = 2 * 3.0
7 是一个素数
7 是一个素数
7 是一个素数
7 是一个素数
7 是一个素数
8 = 2 * 4.0
9 是一个素数
9 = 3 * 3.0

第二种
for n in range(2,10):
    for x in range(2,n):
      if n % x == 0:
            print(n,"=",x,"*",n/x)
            break
    else:
      print(n,"是一个素数")

      
2 是一个素数
3 是一个素数
4 = 2 * 2.0
5 是一个素数
6 = 2 * 3.0
7 是一个素数
8 = 2 * 4.0
9 = 3 * 3.0

Twilight6 发表于 2022-5-19 11:08:48


1.为什么求素数这里需要地板除呢?我改成了除,为啥多了.00

因为单纯的 / 除法,返回的结果是个浮点型,而使用 // 地板除,返回的就是整型

因为这里 if 条件已经判断肯定是整除了,所以直接用地板除可以把小数 .00 部分去除,更美观些

2.还有那个if 和else不是两种情况吗 为什么缩进不一样呀

这里使用的是 for-else 搭配,只要 for 循环正常结束(即不遇到 break)就会指向 else 部分代码

while 也可以搭配 else 使用,效果和 for 循环相同,都是不遇到 break 就会在循环结束后指向 else 处的代码块

try 也可以搭配 else 使用,在 try 没有捕获到错误时执行 else 代码块

开阳与芒 发表于 2022-5-19 11:39:36

多谢大佬解惑
那个为什么是for和else对齐而不是if和else对齐呢{:10_254:}{:10_266:}
页: [1]
查看完整版本: 求大佬解惑 缩进和地板除问题