python018课后问题
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)
1)这道题的答案是不是有很大的问题啊,最后一行代码仅起到将基数设定为5,并没有设定不参与求和计算。而且基数还是将原先的base=3覆盖掉,并不会自动根据最后一个参数进行设置(即:当最后一个参数等于5的时候)。
2)正确的代码应该如何根据这个改进呢? 题目是什么都不知道,要我们怎么帮你改进? Twilight6 发表于 2020-5-22 19:58
题目是什么都不知道,要我们怎么帮你改进?
不好意思,题目是:
(a)计算打印所有参数的和乘以基数(base=3)结果
(b)如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算 shawncaoo 发表于 2020-5-22 20:02
不好意思,题目是:
(a)计算打印所有参数的和乘以基数(base=3)结果
(b)如果参数中最后一个参数为(bas ...
基数不参与求和计算
题目有写不参与呀 Twilight6 发表于 2020-5-22 20:04
题目有写不参与呀
那mFun(1,2,3,4,5,base=5) 这个式子最后(1+2+3+4+5)*5 而不是乘以3,base=5影响了原来的乘数 shawncaoo 发表于 2020-5-22 20:23
那mFun(1,2,3,4,5,base=5) 这个式子最后(1+2+3+4+5)*5 而不是乘以3,base=5影响了原来的乘数
base 重新赋值 = 5 了默认值是 3
就像print 有个默认参数的end = '\n' 换行符号你重新end = ' ' 空格赋值 那么 就失去了原有的换行功能变成 打印一个空格 {:7_129:} 我觉得题目有点歧义,我和你的理解一样,如果param=的话,result应该是(1+2+3+4)*3;如果param=的话,5作为基数不参与求和,result应该是(1+2+3+4)*5。
我就改了一下参考答案,就自动判断最后一位参数是不是5,然后代入不同的算法:
def mFun(*param, base=3):
result = 0
if param[-1]!=5:
for each in param:
result += each
result *= base
print('结果是:', result)
else:
base=5
for each in param:
result += each
result = (result-5)* base
print('结果是:', result)
mFun(#自行输入参数)
页:
[1]