不分南北东西 发表于 2020-12-24 21:44:28

关于求100-200素数的求助

本帖最后由 不分南北东西 于 2020-12-24 21:48 编辑

各位大神好:

我是python小白,在做100-200的素数问题的时候,有些问题不太理解,请求帮助{:5_92:}

标准代码如下:

for i in range(100,200):
    for j in range(2,i):
      if i%j==0:break
    else:
      print(i)

我的代码:

for i in range(100,200):
    for j in range(2,i):
      if i%j==0:
            break
            else:
           print(i)
我的问题如下:
1.在标准代码里为什么break可以放在if语句后面;
2.在标准代码里为什么else可以不跟if组合使用;
3.标准代码里的else为什么可以单独使用?这是else的什么语法?
4.为什么我的代码虽然可以找到素数,但是每个素数都打印99遍?

wp231957 发表于 2020-12-24 21:44:29

for i in range(100,200):
    for j in range(2,i):
      if i%j==0:
            break       #如果这里被执行到,就表明是一个合数,那么下面的else 就没有机会执行
    else:
      print(i,end="")   #如果上面的break 没有机会执行,就表明是一个素数,就要跑这个语句的
                            #   for .......else........这个python下的特殊语法,就是去循环里面找人,找到了直接中断
                            #   找不到,好的,为了礼貌,找不到 要通知别人一声


'''
D:\wp>py wp\app3.py
101103107109113127131137139149151157163167173179181191193197199
'''

wp231957 发表于 2020-12-24 21:53:35

看缩进,那个else是和for配对的
那个break放在if后就是一种简写,没什么的

学习使我快乐3 发表于 2020-12-25 10:00:25

else不是单独使用,只是为了脱离for j 的循环,如果像你那么写的话就会一个数字打印很多遍,每次j循环一次就会打印一遍
页: [1]
查看完整版本: 关于求100-200素数的求助