ldk4188 发表于 2020-12-7 11:16:29

第18节练习

0. 编写一个符合以下要求的函数:
    a) 计算打印所有参数的和乘以基数(base=3)的结果
    b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。

def firstfunction(*num, base =3):

    if num == 5:
      base = 5
      print('结果为: ', (((num+num)*(len(num)-1))/2)* base)

    else:
      print('结果为: ', (((num+num)*len(num))/2) * base)

num (1,2,3,4,1,51,23,124,5)

想请问一下各位大佬,这个是18节的练习,我这么编程是否可以?为什么出不来结果?

谢谢各位大佬帮我解答!

昨非 发表于 2020-12-7 12:36:40

你定义的函数名是firstfunction
但是你最后一行调用的是num啊

你改了再试试

ldk4188 发表于 2020-12-7 14:09:14

昨非 发表于 2020-12-7 12:36
你定义的函数名是firstfunction
但是你最后一行调用的是num啊



修改后会出现 IndexError: tuple index out of range,应该如何解决啊?

昨非 发表于 2020-12-7 14:32:03

ldk4188 发表于 2020-12-7 14:09
修改后会出现 IndexError: tuple index out of range,应该如何解决啊?

索引超范围了,凡事你用len的地方,全改成len-1

ldk4188 发表于 2020-12-7 14:38:48

昨非 发表于 2020-12-7 14:32
索引超范围了,凡事你用len的地方,全改成len-1

def firstfunction(*num, base =3):

    if num == 5:
      base = 5
      print('结果为: ', (((num+num)*(len(num)-2))/2) * base)

    else:
      print('结果为: ', (((num+num)*(len(num)-1))/2) * base)


firstfunction (1,2,3)


大佬,你看一下,我这样修改后答案是错的,出来是12.0

昨非 发表于 2020-12-7 14:39:45

ldk4188 发表于 2020-12-7 14:38
def firstfunction(*num, base =3):

    if num == 5:


我不知道题目要求需要答案是几
只能说明你语法对了逻辑不对呗

昨非 发表于 2020-12-7 14:44:52

题目要求求出所有参数的的和,你这个根本不满足要求啊

昨非 发表于 2020-12-7 14:53:17

我刚刚看了,答案写的十分简洁标准
def firstfunction(*num, base=3):
    result = 0
    for each in num:#先遍历num求所有num的和
      result += each

    result *= base#然后再乘以基数base
    print('结果是:', result) #打印
#注意:这里的base有3作为默认参数值,而一旦结尾为5,修改参数base=5就好了,比if-else判断简单
firstfunction(1, 2, 3, 4, 5, base=5)

tytommy 发表于 2020-12-7 15:44:52

题目要认真看呀,让你求和没有告诉你算等差数列的求和

ldk4188 发表于 2020-12-7 15:45:13

tytommy 发表于 2020-12-7 15:44
题目要认真看呀,让你求和没有告诉你算等差数列的求和

突然发现了,脑子瓦特了
页: [1]
查看完整版本: 第18节练习