鱼C论坛

 找回密码
 立即注册
查看: 2440|回复: 3

pyhon18讲,动手题0的答案是否不太合题意??

[复制链接]
发表于 2014-6-21 21:29:20 | 显示全部楼层 |阅读模式
10鱼币
编写一个符合以下要求的函数:
    a) 计算打印所有参数的和乘以基数(base=3)的结果
    b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。


小女子不才,按偶的理解,上题应该系这样的:
如果向*param传入的参数中,最后一个不为5,则BASE=3, RESULT += EACH, RESULT *= BASE(即3)
但如果向*param传入的参数中,最后一个为5, 则BASE=5(即PARAM[-1],并且不参与求和计算),
则RESULT应 += EACH , 再-5,然后*BASE(即5)

鱼哥的答案系:
def mFun(*param, base=3):
    result = 0
    for each in param:
        result += each
    result *= base
    print('the result is:',result)
mFun(1,2,3,4,5,base=5)         #结果为75,即5参与了求和计算


def mFun(*param, base=3):
    result = 0
    for each in param:
        if param[-1] != 5:
            result += each
        else:
            result += each
            result =result - 5
            base = 5
    result *= base
    print('the result is:',result)
mFun(1,2,3,4,5)       #但偶这样写,结果更离谱,竟然系-50  怎么改才能实现期望值=(1+2+3+4)*5=50 呢????


求各位路过的大神,大牛指点指点,感谢感谢


最佳答案

查看完整内容

#你的哦错误是在for循环里当最后一个参数是5时就会每次都减去5这样就变成-50了。 #呵呵!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-21 21:29:21 | 显示全部楼层

  1. def mFun(*param, base=3):
  2.     result = 0
  3.     b = False
  4.     for each in param:
  5.         if param[-1] != 5:
  6.             result += each         
  7.         else:
  8.             result += each         
  9.             base = 5
  10.             b = True    #判断出来最后参数是5
  11.     if b == True:       #最后参数是5就减去最后的参数5
  12.         result =result - 5   
  13.     result *= base
  14.     print('the result is:',result)
复制代码
#你的哦错误是在for循环里当最后一个参数是5时就会每次都减去5这样就变成-50了。
#呵呵!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-22 11:03:18 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-25 15:53:06 | 显示全部楼层
你的想法和我一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 10:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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