鱼C论坛

 找回密码
 立即注册
查看: 1950|回复: 5

[已解决]有没大哥哥小姐姐懂的

[复制链接]
发表于 2022-8-18 20:29:48 | 显示全部楼层 |阅读模式

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

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

x
def mFun(*numbers):
    for i in numbers:
        i+=i
        print(i)
   




mFun(1,2,3,4,5,)
为什么打印出来不是1+2  3  3+3 6   6+4 10  10+5  15         (3 ,6 ,10,15)
                        
最佳答案
2022-8-18 22:00:41
myFun(1,2,3,4,5)这样代码开始执行后就跳转到函数内部开始执行循环。

循环的第一句是for i in numbers,此时i的值就是第一个数1,然后执行i += 1(等价于i = i + 1,也就是i = 1 + 1),i变成了2,接下来打印i的值,所以输出为2而不是你认为的3;
接下来是第二轮循环,此时i变为2,再次执行 i += i,也就是i = 2 + 2,所以这次输出为4而非6;
第三轮循环时,i的值时3,i += i等价于i = 3 + 3,因此输出6。
后面几轮就不分析了。

之所以和你的理解不一致是因为 i += i这一句,它是让i自己加自己。如果想要让程序的输出与你的预期一致,你需要在循环开始前创建一个变量来记录和:
def myFun(*numbers):
    s = 0
    for i in numbers:
        s += i  # 等价于s = s + i
        print(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-18 20:41:38 | 显示全部楼层
def mFun(*numbers):
    for i in range(len(numbers)):
        if i == 0:
            numSum = numbers[i]
        else:
            numSum += numbers[i]
            print(numSum)
   
mFun(1,2,3,4,5,)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-18 21:45:15 | 显示全部楼层
def mFun(* numbers):
    n = numbers[0]
    for k in range(1 , len(numbers)):
        n = n + numbers[k]
        print(n)
mFun(1 , 2 , 3 , 4 , 5)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-18 21:45:57 | 显示全部楼层

我想问为什么这行代码是2 ,4,6,8,10  我感觉是 3,6,10,15
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-18 22:00:41 | 显示全部楼层    本楼为最佳答案   
myFun(1,2,3,4,5)这样代码开始执行后就跳转到函数内部开始执行循环。

循环的第一句是for i in numbers,此时i的值就是第一个数1,然后执行i += 1(等价于i = i + 1,也就是i = 1 + 1),i变成了2,接下来打印i的值,所以输出为2而不是你认为的3;
接下来是第二轮循环,此时i变为2,再次执行 i += i,也就是i = 2 + 2,所以这次输出为4而非6;
第三轮循环时,i的值时3,i += i等价于i = 3 + 3,因此输出6。
后面几轮就不分析了。

之所以和你的理解不一致是因为 i += i这一句,它是让i自己加自己。如果想要让程序的输出与你的预期一致,你需要在循环开始前创建一个变量来记录和:
def myFun(*numbers):
    s = 0
    for i in numbers:
        s += i  # 等价于s = s + i
        print(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-18 23:14:23 | 显示全部楼层
本帖最后由 jackz007 于 2022-8-18 23:17 编辑
gaoxiuhua520 发表于 2022-8-18 21:45
我想问为什么这行代码是2 ,4,6,8,10  我感觉是 3,6,10,15

    for i in numbers:
        i += i
        在这个循环中,循环变量 i 值只读,就是说,循环中对 i 值的改变并不影响下一个 i 值的生成。5 次循环中 i 的值依次为:
 numbers = (1 , 2 , 3 , 4 , 5)
1:  i = i + i = 1 + 1 = 2
2:  i = i + i = 2 + 2 = 4
3:  i = i + i = 3 + 3 = 6
4:  i = i + i = 4 + 4 = 8
5:  i = i + i = 5 + 5 = 10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 12:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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