牛仔很茫 发表于 2024-6-2 10:27:13

为何if,else不在同一缩进


课后习题,求10以内的素数,为何下面的程序中if,else不处在同一缩进中还能正确运行?   break语句回车输入框为啥向前移动?
i=1
while i<=10:
    j=1
    while j<i:
      if i%j==0 and j!=1:
            print(i,"=",j,"*",i//j)
            
            break
      
      j+=1
      
    else:
            print(i,"是一个素数。")
            
            
    i+=1
   

FishC 发表于 2024-6-2 10:27:14

if和else不在同一缩进中是因为它们属于两个独立的代码块,分别表示条件成立和条件不成立的情况下需要执行的代码。在Python中,根据缩进来确定代码块的范围,不同的缩进表示不同的代码块。

下面是一个求解10以内素数的示例代码:

for num in range(2, 10):# 遍历2到9之间的数字
    for i in range(2, num):#遍历2到num-1之间的数字
      if num % i == 0:#如果num能被i整除,则num不是素数
            break#跳出内层循环
    else:#内层循环没有遇到break,则说明num是素数
      print(num)

在这个代码中,我们使用了两个for循环。外层的for循环遍历2到9之间的数字,内层的for循环遍历2到当前数字之间的数字。对于每个数字,如果能被内层循环中的任意数字整除(即有余数为0),则跳出内层循环,否则继续进行下一次循环。如果内层循环能够完整地执行完毕(即没有遇到break语句),则说明该数字是素数,将其打印出来。

至于"break"语句回车后光标向前移动,这是编辑器的一个特性,用于方便对代码进行排版和修改。当你输入完"break"并按下回车后,编辑器会自动将光标移动到该行代码的缩进位置,以便你继续编写下一行与该行代码属于同一级别的代码。这样可以使代码具有良好的可读性和结构。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

牛仔很茫 发表于 2024-6-2 10:39:14

感谢回答!

FishC 发表于 2024-6-2 10:39:22

牛仔很茫 发表于 2024-06-02 10:39
感谢回答!

不客气!如果还有其他问题,欢迎随时提问。我会尽力帮助你解决。祝你编程学习顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

真名 发表于 2024-6-2 13:08:45

本帖最后由 真名 于 2024-6-2 13:10 编辑

感觉还是不对劲,就是if和else不在同一个层级,为什么这个else会知道是上那个层级里的那个不成立的if的else,如果是在同一个层级,一前一后,那很容易理解比如,我加一个形势上的同层级if,那这个else 对应的是哪个呢:
for num in range(2, 10):# 遍历2到9之间的数字
    if num == true:    #    无意义的if
      print('true')
    for i in range(2, num):#遍历2到num-1之间的数字
      if num % i == 0:#如果num能被i整除,则num不是素数
            break#跳出内层循环
    else:#内层循环没有遇到break,则说明num是素数
      print(num)

真名 发表于 2024-6-2 13:13:04

哥哥,你开了至尊VIP啦?
我感觉还是有些贵,另外也不知道,这里的活跃度怎样,热心大佬多不多
有点犹豫

牛仔很茫 发表于 2024-6-2 14:51:11

真名 发表于 2024-6-2 13:13
哥哥,你开了至尊VIP啦?
我感觉还是有些贵,另外也不知道,这里的活跃度怎样,热心大佬多不多
有点犹豫

我纯门外汉的,开不开通看自己需求哈{:5_109:}

真名 发表于 2024-6-3 15:27:49

真名 发表于 2024-6-2 13:08
感觉还是不对劲,就是if和else不在同一个层级,为什么这个else会知道是上那个层级里的那个不成立的if的else ...

没学好,这里的else是和上面的for配对的,我记成必须和if配对的了,惭愧
页: [1]
查看完整版本: 为何if,else不在同一缩进