鱼C论坛

 找回密码
 立即注册
查看: 5316|回复: 4

[已解决]谁给解决一下这段什么意思

[复制链接]
发表于 2017-3-4 07:51:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for n in range(2,10):
    for x in range(2,n):
        if n % x ==0:
            print(n,'equals',x,'*',n//x)
            break
    else:
        print(n,'is a prime number')
最佳答案
2017-3-7 12:34:06
外层循环要等内层循环结束后才会进行下一次循环,就是第一次n是2,x在2到2范围内进行取值并循环,此时x的循环结束了,n进行下次循环,n=3,然后x在2到3范围进行循环,x取2进行计算操作后x的循环就结束了,再然后n等于4,x在2到4范围进行循环,当x取3进行计算操作后x的循环结束,依次类推;

你应该知道对于一个循环来说,只有当它的代码块执行一边之后才会进行下一次循环,所以x的循环是在n循环的代码块中的,每次只有当x全部循环完后,n才会取新值并进行下一次循环

关于else问题,else也可以跟在for和while循环之后的,只是当循环正常结束后else语句的代码块才会执行,而当循环非正常结束,如代码块包含break,else语句代码块就被跳过了;所以如果你把break去掉,每次循环if判断结果如何,else后面的语句都会打印一次,同时你应该注意到x是在2到n的范围进行循环的,即每次x都取不到n的值,只有当n不是素数if的条件判断才可能是true,break才会被执行,else后边的语句才会被跳过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-4 13:12:30 | 显示全部楼层
for n in range(2,10):
# 依次将2到10(不包含10)作为n的值来循环
    for x in range(2,n):
# 依次将2到n(不包含n)作为x的值来循环,注意第一次n的值是2,则对应的n在range(2,2)中取值,因为range函数只有两个参数且两个参数相同时返回的是空值,所以x为空
        if n % x ==0:
#判断x是否能被n整除,能则下列缩进了的代码
            print(n,'equals',x,'*',n//x)
#打印(n的值,'equals',x的值,'*',n的值除x的值所得的商)
            break
#终止此次循环
    else:
#当上面if条件不满足,执行下列缩进了的代码
        print(n,'is a prime number')
#打印(n的值,'is a prime number')
总体来说这段代码就是用来找2到10(不包含10)中的素数,可能你看不懂是因为这代码用了循环内嵌套循环,多做这方面的练习,你就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-5 21:32:44 | 显示全部楼层
18813034116 发表于 2017-3-4 13:12
for n in range(2,10):
# 依次将2到10(不包含10)作为n的值来循环
    for x in range(2,n):

第一次循环 n,x都是2这个我可以理解。但是第二次循环是不是就是n ,x是不就就是3 .第三次循环是不是就是n ,x是不就就是4  这样的循环每次两个for都会循环码?还有 else不是应该在if里面吗?为什么for里面也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-6 13:42:03 | 显示全部楼层
silingqqq 发表于 2017-3-5 21:32
第一次循环 n,x都是2这个我可以理解。但是第二次循环是不是就是n ,x是不就就是3 .第三次循环是不是就是n ...

第一次循环n==2
for x in range(2,2)  
x是没有东西的,此次循环结束。

第二次循环时,
n ==3
for x in range(2,3)
x 只能取2 ,range(a,b)是不包含b值的
判断3%2不满足条件 打印 3 is a prime number
此次循环结束

第三次n==4
for x in range(2,4)
x依次取2,3
往下判断两次

怀疑else对齐位置有误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 12:34:06 | 显示全部楼层    本楼为最佳答案   

问题回复

外层循环要等内层循环结束后才会进行下一次循环,就是第一次n是2,x在2到2范围内进行取值并循环,此时x的循环结束了,n进行下次循环,n=3,然后x在2到3范围进行循环,x取2进行计算操作后x的循环就结束了,再然后n等于4,x在2到4范围进行循环,当x取3进行计算操作后x的循环结束,依次类推;

你应该知道对于一个循环来说,只有当它的代码块执行一边之后才会进行下一次循环,所以x的循环是在n循环的代码块中的,每次只有当x全部循环完后,n才会取新值并进行下一次循环

关于else问题,else也可以跟在for和while循环之后的,只是当循环正常结束后else语句的代码块才会执行,而当循环非正常结束,如代码块包含break,else语句代码块就被跳过了;所以如果你把break去掉,每次循环if判断结果如何,else后面的语句都会打印一次,同时你应该注意到x是在2到n的范围进行循环的,即每次x都取不到n的值,只有当n不是素数if的条件判断才可能是true,break才会被执行,else后边的语句才会被跳过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-4 03:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表