dong811019 发表于 2020-7-9 23:20:07

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

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:23:38

分割线,请使用表示。

dong811019 发表于 2020-7-9 23:28:04

永恒的蓝色梦想 发表于 2020-7-9 23:23
分割线,请使用表示。

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

Twilight6 发表于 2020-7-9 23:28:44



你的代码可以改成这样:


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

x=input('请输入数字,使用“,”分隔:')# 注意这边是英文的逗号
result =
print(he(result))

永恒的蓝色梦想 发表于 2020-7-9 23:30:48

dong811019 发表于 2020-7-9 23:28
是啥意思呢 后面哪个模块呢请问下

你看看你的回复里,是不是有了一条分割线?

Twilight6 发表于 2020-7-9 23:32:13

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



input 是返回字符串类型的值

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

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

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

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

然后在用列表推导式 将列表里的元素全部转为整型即可

Twilight6 发表于 2020-7-9 23:33:44

永恒的蓝色梦想 发表于 2020-7-9 23:30
你看看你的回复里,是不是有了一条分割线?

难得这么晚看见你在线{:7_139:}

永恒的蓝色梦想 发表于 2020-7-9 23:35:09

Twilight6 发表于 2020-7-9 23:33
难得这么晚看见你在线

{:10_256:}看看力扣

Twilight6 发表于 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

dong811019 发表于 2020-7-9 23:39:40

Twilight6 发表于 2020-7-9 23:32
input 是返回字符串类型的值

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


大神 正解 请收下我的膝盖{:5_106:}

Twilight6 发表于 2020-7-9 23:40:07

永恒的蓝色梦想 发表于 2020-7-9 23:35
看看力扣

{:7_131:}哈哈...为什么这样都可以直接白嫖最佳

Twilight6 发表于 2020-7-9 23:40:33

dong811019 发表于 2020-7-9 23:39
大神 正解 请收下我的膝盖

然后呢...把最佳给了别人?{:10_245:}

dong811019 发表于 2020-7-9 23:41:11

永恒的蓝色梦想 发表于 2020-7-9 23:30
你看看你的回复里,是不是有了一条分割线?

原来这样子 谢谢

永恒的蓝色梦想 发表于 2020-7-9 23:42:33

Twilight6 发表于 2020-7-9 23:40
哈哈...为什么这样都可以直接白嫖最佳

WTF?这提问帖?{:10_247:}算了吧,你也白嫖不少了{:10_256:}

dong811019 发表于 2020-7-9 23:44:07

Twilight6 发表于 2020-7-9 23:40
然后呢...把最佳给了别人?

第一次发帖 答案太及时呢 有点激动小手一抖 选错楼了抱歉{:5_100:}

Twilight6 发表于 2020-7-9 23:44:23

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



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

永恒的蓝色梦想 发表于 2020-7-9 23:45:07

Twilight6 发表于 2020-7-9 23:44
给你没啥事哈哈~,只是我讨厌这种瞎给最佳的行为

最佳选的有时候就很离谱{:10_249:}

Twilight6 发表于 2020-7-9 23:46:49

永恒的蓝色梦想 发表于 2020-7-9 23:45
最佳选的有时候就很离谱

你早点休息吧 ~ 我先睡了 {:7_134:}

dong811019 发表于 2020-7-9 23:49:08

本帖最后由 Twilight6 于 2020-7-10 09:23 编辑


好像选最佳没有再确认一点就OK了 错了也不能改
下次再抽你牌牌了幸苦了{:5_97:}

92845252427 发表于 2020-7-10 09:05:15

学习
页: [1] 2
查看完整版本: [课后作业] 第018讲:函数:灵活即强大(与答案不一样)