018讲动动手第一题
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)
首先,*param中的“*”是什么作用,
其次,为什么运行程序后还是会把基数5给加进去,是我理解问题有误么,请广大鱼油帮我解答一下 本帖最后由 人zai旅途 于 2016-11-6 00:50 编辑
分享一下我的理解,如果满意,请选择为最佳答案,给个技术值;
首先,*param中的“*”是什么作用
答案:当函数的参数数量不确定时,在定义函数的时候可以使用收集参数,即在形参前面加一个“ * ”,其实是表示该参数变量是一个元组类型,传入的实参会以元组形式复制为形参变量,*param是一个特定表达方式;
其次,为什么运行程序后还是会把基数5给加进去,是我理解问题有误么,
答案:
mFun(1, 2, 3, 4, 5, base=5),重新一定base=5以后,收集参数部分result=1+2+3+4+5=15,
最后result *= base,result =15*5=75
mfun(1,2,3,4,5),默认base=3,结果为15*3=45;
根据函数定义过程,base本来就不属于收集参数,不参与求和计算的 *的作用是把所有的位置参数收集成一个元组
算出的结果就是75,没问题啊 kox 发表于 2016-11-5 19:52
*的作用是把所有的位置参数收集成一个元组
算出的结果就是75,没问题啊
最后一个参数为(base=5),基数不参与求和计算,5应该不是不能算到求和里的么? *是可以输入很多个值的 无言{:10_260:} 两次无言{:10_264:} 根据题意 我感觉是这样的:
def mFun(*params,base = 3):
list1 = list(params)
last = list1.pop()
list1.append(last)
result = 0
if last != 5:
for each in list1:
result += each
result *= base
elif last == 5:
list1.pop()
for each in list1:
result += each
result *= 5
return result
头大一个礼拜,我是弱智
页:
[1]