python作业题
def myfun(*parameter,base=3):sum = 0
parameter = list(parameter)
if parameter.pop == 5:
base = 5
for each in parameter:
if each != base:
sum = sum + each * base
print(sum)
-----------------------------------
>>> myfun(1,2,3,4,5,6,7,8,9,5)
141
0. 编写一个符合以下要求的函数:
a) 计算打印所有参数的和乘以基数(base=3)的结果
b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。
代码不知道哪里错了
141也不知道如何计算出来的 141是因为基数还是3,3不参与计算。然后1+2+...+7+8+9+2=47,47*3=141。最后的2是因为我用5=3+2,顶替前面的3。基数没改变,是因为parameter.pop()这样才对, 本帖最后由 昨非 于 2020-10-22 23:10 编辑
因为你 if parameter.pop == 5:
这句代码里pop返回的是一个对象
<built-in method pop of list object at 0x000001A990608F00>
所以,判断失败,base依旧等于3
最后141=所有参数的和乘以3
def myfun(*parameter,base=3):
sum = 0
parameter = list(parameter)
if parameter.pop() == 5:#加个括号就好了
base = 5
for each in parameter:
if each != base:
sum = sum + each * base
print(sum)
myfun(1,2,3,4,5,6,7,8,9,5)
修改后,结果200=(1+2+3+4+6+7+8+9)*5 满意的话记得设为最佳答案
页:
[1]