鱼C论坛

 找回密码
 立即注册
查看: 1689|回复: 21

[已解决][课后作业] 第018讲:函数:灵活即强大(与答案不一样)

[复制链接]
发表于 2020-7-9 23:20:07 | 显示全部楼层 |阅读模式

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

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

x
0. 编写一个符合以下要求的函数:
   
    a) 计算打印所有参数的和乘以基数(base=3)的结果
    b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。
#习题答案如下:
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)



我第一反应就是把5作为条件判断
#代码部分
def he(*x):
    if x[-1] == 5:
        a1=sum(x)*3-15 #或者a1=sum(x)*3-x[-1] *3,其实感觉还很粗糙
        return a1
    else:
        a1=sum(x)*3
        return a1
  
#运行结果
>>> he(1,3,5,7)
48
>>> he(1,-2,8,5)
21


------------------------分割线--------------
本来没想到使用收集参数*,那么每次调用函数先x=(1,2,3,4,5)
再he(x)
#代码部分
def he(x):
    if x[-1] == 5:
        a1=sum(x)*3-15
        return a1
    else:
        a1=sum(x)*3
        return a1

--------------------------其实本来想使用input()做出可输入的,但是运行一输入就一堆报错,我这种初学者只能想想,请问下各位大神有啥建议没?-------------------------------------
x=input('请输入数字,使用“,”分隔:')
x=int(x)
def he(x):
    if x[-1] == 5:
        a1=sum(x)*3-15
        return a1
    else:
        a1=sum(x)*3
        return a1
最佳答案
2020-7-9 23:30:48
dong811019 发表于 2020-7-9 23:28

是啥意思呢 后面哪个模块呢请问下

你看看你的回复里,是不是有了一条分割线?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-9 23:23:38 | 显示全部楼层

回帖奖励 +1 鱼币

分割线,请使用
  1. [hr]
复制代码
表示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 23:28:04 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-9 23:23
分割线,请使用表示。


是啥意思呢 后面哪个模块呢请问下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:28:44 | 显示全部楼层


你的代码可以改成这样:


  1. def he(x):
  2.     if x[-1] == 5:
  3.         a1=sum(x)*5-25   # 当最后一个参数为 5 的时候 设置基数为 5 了,而不是 3 ,此时要 *5,而且要减去 25
  4.         return a1
  5.     else:
  6.         a1=sum(x)*3
  7.         return a1

  8. x=input('请输入数字,使用“,”分隔:')  # 注意这边是英文的逗号
  9. result = [int(i) for i in x.split(',')]
  10. print(he(result))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:30:48 | 显示全部楼层    本楼为最佳答案   
dong811019 发表于 2020-7-9 23:28

是啥意思呢 后面哪个模块呢请问下

你看看你的回复里,是不是有了一条分割线?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:32:13 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 Twilight6 于 2020-7-9 23:34 编辑



input 是返回字符串类型的值

int 则是把其他类型的值转化为整数

你直接这样用肯定会报错,因为逗号不能转为整数

就算你只输入一个数,不输入逗号,进入函数后也会报错,因为整型不能进行索引

我们用 split 切割下逗号,就会将字符串转化为字符串列表了

然后在用列表推导式 将列表里的元素全部转为整型即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-9 23:33:44 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-9 23:30
你看看你的回复里,是不是有了一条分割线?

难得这么晚看见你在线
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:35:09 | 显示全部楼层
Twilight6 发表于 2020-7-9 23:33
难得这么晚看见你在线


看看力扣
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:38:55 | 显示全部楼层
Twilight6 发表于 2020-7-9 23:28
你的代码可以改成这样:


你的代码这里当基数等于 5 的时候和甲鱼哥算的答案会不一样,是因为你的是将最后的参数当成 base 然后不参与运算了

但是甲鱼哥是指 base 不参与运算 前面的 1,2,3,4,5 全部参与运算 ,所以我们这代码少了 25

你如果想要和甲鱼哥答案一样,那么你就要最后多填次 5 也就是 1,2,3,4,5,5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 23:39:40 | 显示全部楼层
Twilight6 发表于 2020-7-9 23:32
input 是返回字符串类型的值

int 则是把其他类型的值转化为整数

大神 正解 请收下我的膝盖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:40:07 | 显示全部楼层

哈哈...为什么这样都可以直接白嫖最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:40:33 | 显示全部楼层
dong811019 发表于 2020-7-9 23:39
大神 正解 请收下我的膝盖

然后呢...把最佳给了别人?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 23:41:11 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-9 23:30
你看看你的回复里,是不是有了一条分割线?

原来
这样子 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:42:33 | 显示全部楼层
Twilight6 发表于 2020-7-9 23:40
哈哈...为什么这样都可以直接白嫖最佳

WTF?这提问帖?
算了吧,你也白嫖不少了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 23:44:07 | 显示全部楼层
Twilight6 发表于 2020-7-9 23:40
然后呢...把最佳给了别人?

第一次发帖 答案太及时呢 有点激动
小手一抖 选错楼了  抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:44:23 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-9 23:42
WTF?这提问帖?
算了吧,你也白嫖不少了



给你没啥事哈哈~,只是我讨厌这种瞎给最佳的行为

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:45:07 | 显示全部楼层
Twilight6 发表于 2020-7-9 23:44
给你没啥事哈哈~,只是我讨厌这种瞎给最佳的行为

最佳选的有时候就很离谱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 23:46:49 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-9 23:45
最佳选的有时候就很离谱

你早点休息吧 ~ 我先睡了

点评

晚安~  发表于 2020-7-9 23:48
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 23:49:08 | 显示全部楼层
本帖最后由 Twilight6 于 2020-7-10 09:23 编辑


好像选最佳没有再确认  一点就OK了 错了也不能改
  下次再抽你牌牌了  幸苦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-10 09:05:15 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 13:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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