鱼C论坛

 找回密码
 立即注册
查看: 1150|回复: 1

[已解决]分不清区别 请指教

[复制链接]
发表于 2021-7-3 00:55:22 | 显示全部楼层 |阅读模式

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

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

x
def a (n=5):
    c=n
    for i in range(1,n):
        c *=i
    return c
print (a())
b=int(input('d'))
d=a(b)
print ('%d,%d'%(b,d))     等于5,120
-----------------------------------
x=5
for i in range(1,5):
        x=5
        x *=i
        
print (x)   等于20

‘x * =i 的计算过程是怎么样的’
我看着两个for没有区别啊 为啥结果不同
最佳答案
2021-7-3 02:17:49


x *= i 等价于  x = x * i ,你第二个 for 循环的第一个语句为  x = 5 ,导致每次循环 x 都为 5

而第一次循环,c = n 是在 for 循环外,而没在 for 循环内,所以导致循环报错.

具体写出来循环计算结果你就能看出来什么地方不同了:

第一个 for 循环:

第一次循环 c = c * i = 5 * 1 = 5 ,第二次循环 c = c * i = 5 * 2 = 10 ,第三次 c = c * i = 10 * 3 = 30 第四次 c = c * i = 30 * 4 = 120

第二个 for 循环(因为循环中给 x 赋值,所以每次都为 5):

第一次循环 x = x * i = 5 * 1  = 5,第二次循环 x = x * i = 5 * 2 = 10,第三次 x = x * i = 5 * 3 = 15 第四次 x = x * i = 5 * 4 = 20

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 02:17:49 | 显示全部楼层    本楼为最佳答案   


x *= i 等价于  x = x * i ,你第二个 for 循环的第一个语句为  x = 5 ,导致每次循环 x 都为 5

而第一次循环,c = n 是在 for 循环外,而没在 for 循环内,所以导致循环报错.

具体写出来循环计算结果你就能看出来什么地方不同了:

第一个 for 循环:

第一次循环 c = c * i = 5 * 1 = 5 ,第二次循环 c = c * i = 5 * 2 = 10 ,第三次 c = c * i = 10 * 3 = 30 第四次 c = c * i = 30 * 4 = 120

第二个 for 循环(因为循环中给 x 赋值,所以每次都为 5):

第一次循环 x = x * i = 5 * 1  = 5,第二次循环 x = x * i = 5 * 2 = 10,第三次 x = x * i = 5 * 3 = 15 第四次 x = x * i = 5 * 4 = 20

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 15:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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