鱼C论坛

 找回密码
 立即注册
查看: 2462|回复: 11

[已解决]第018讲函数,课后题求教

[复制链接]
发表于 2020-2-18 10:01:24 | 显示全部楼层 |阅读模式

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

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

x
def mFun(*param, base=3):
    result = 0
    for each in param:
        result += each

    result *= base
   
    print('结果是:', result)

mFun(1, 2, 3, 4, 5, base=5)


求大佬讲解一下这个思路是什么呀,第一步设定函数,然后第二步为什么要设置result = 0 呢? 后面好几部都不太清楚为什么这么写 没有思路 = =
最佳答案
2020-2-18 10:48:22
先要 result = 0 ,给变量赋一个初始值,然后后面再相加。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-18 10:07:47 | 显示全部楼层
result结果啊
就和做数学题一样,你做完一道,不可能把那个答案和下一道加一起吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-18 10:13:52 | 显示全部楼层
懂了! 就是一开始不清楚为什么要加一个result=0 。就是一开始param还没赋值,所以是0,0和0的乘积还是等于0,这样理解对吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 10:14:34 | 显示全部楼层
qiuyouzhi 发表于 2020-2-18 10:07
result结果啊
就和做数学题一样,你做完一道,不可能把那个答案和下一道加一起吧?


懂了! 就是一开始不清楚为什么要加一个result=0 。就是一开始param还没赋值,所以是0,0和0的乘积还是等于0,这样理解对吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 10:26:16 | 显示全部楼层
supermanmimi 发表于 2020-2-18 10:14
懂了! 就是一开始不清楚为什么要加一个result=0 。就是一开始param还没赋值,所以是0,0和0的乘积还是 ...


不对,param是要输入的,所以和形参没关系
因为每次计算时都要将result初始化,否则这次计算完后result会越来越大
举个例子:
我输入1, 2, 3, 4, 5
result + 1 + 2 + 3 + 4 + 5
result * base(3)
print(result)
这时result应该是45,但如果不归0的话:
第二次计算:
我还是输入1, 2, 3, 4, 5
result(45) + 1, 2, 3, 4, 5
result * base(3)
这时result的值就不再是45,而是180了
所以每次计算完要归0
你还可以这么理解:
这个函数要计算一个数,可是却没有东西装下结果,所以要定义一个变量(初始化为零)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-18 10:27:15 | 显示全部楼层
从头开始,
设定函数名字mfun,参数是以未知个数元素的元组形参param,整形变量base
设置result = 0,相当于声明变量。
如果不设置result=0,后面写result+=each肯定会报找不着result的错误。
for循环好好看一下,for each in param:现在处理每一个在param的元素,将其赋给each。
result += each(等价于result = result + each) 将each与result值相加
循环结束
现在result的值是param里面所有的元素的和。
result *= base (等价于result = result*base)将result与base值相乘
打印result的值。
函数结束

调用函数mfun,第一个参数元祖param的元素为1,2,3,4,5(这里如果不了解,需要看看函数定义的规则),第二个参数base = 5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 10:38:33 | 显示全部楼层
楼主的基础不牢,得静下心来好好看看前面的知识。
这两个一定好好看看,for循环,变量声明的方法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 10:48:22 | 显示全部楼层    本楼为最佳答案   
先要 result = 0 ,给变量赋一个初始值,然后后面再相加。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-18 10:50:49 | 显示全部楼层
zltzlt 发表于 2020-2-18 10:48
先要 result = 0 ,给变量赋一个初始值,然后后面再相加。

懂了!谢谢老师
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 10:51:20 | 显示全部楼层
沉默的人e 发表于 2020-2-18 10:38
楼主的基础不牢,得静下心来好好看看前面的知识。
这两个一定好好看看,for循环,变量声明的方法。

好的 谢谢 之前一直没看课后题 现在刚开始看 我再好好学一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 10:52:32 | 显示全部楼层
沉默的人e 发表于 2020-2-18 10:27
从头开始,
设定函数名字mfun,参数是以未知个数元素的元组形参param,整形变量base
设置result = 0,相 ...

懂了懂了 非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 10:53:18 | 显示全部楼层
qiuyouzhi 发表于 2020-2-18 10:26
不对,param是要输入的,所以和形参没关系
因为每次计算时都要将result初始化,否则这次计算完后resul ...

懂了 谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 21:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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