形单影只的鱼 发表于 2021-7-3 00:55:22

分不清区别 请指教

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没有区别啊 为啥结果不同

Twilight6 发表于 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

页: [1]
查看完整版本: 分不清区别 请指教