davidmou 发表于 2023-7-9 22:45:36

help memememelalala

# 0. 编写一个符合以下要求的函数:

# 计算打印所有参数的和乘以基数(base = 3)的结果(比如 mFun(1, 2, 3, 4, 5) 的结果为 45)
# 如果参数中最后一个参数为(base = 5),则设定基数为 5,基数不参与计算(比如 mFun(1, 2, 3, 4, 5, base=5) 的结果为 75)。

def sum3(x):
    x = list(x)
    if int(x.pop()) != 5:
      print(sum(x.append(x.pop())) * 3)
    else:
      y = x.pop()
      print(sum(x) * 5)

sum3()
问一下哪有错哟

sfqxx 发表于 2023-7-9 22:50:20

在您提供的代码中,有一个逻辑错误。请注意以下部分:

print(sum(x.append(x.pop())) * 3)

`list.append()`方法不返回列表本身,而是将元素添加到列表末尾,并返回None。因此,`x.append(x.pop())`表达式的值始终为None。

修改后的代码如下:

def sum3(*args, base=3):
    if len(args) > 0 and args[-1] == base:
      args = list(args[:-1])
      result = sum(args)
    else:
      result = sum(args) * base

    return result

# 测试样例
print(sum3(1, 2, 3, 4, 5))# 输出:45
print(sum3(1, 2, 3, 4, 5, base=5))# 输出:75
这里使用了可变数量的位置参数 `*args` 来接收不确定数量的输入参数。初始情况下,如果最后一个参数与基数相等,则将其剔除,否则将整个参数列表求和并乘以基数得到结果。最后,返回计算结果。

求最佳答案{:10_254:}

isdkz 发表于 2023-7-9 22:53:29

你的函数有几个问题:

1. 函数名与问题描述中的不匹配,应为 mFun 而不是 sum3 。
2. 你尝试使用一个关键字参数 base ,但在你的函数参数中并没有定义这个参数。
3.x.append() 的返回值是 None , sum(None) 会导致错误。
4.x.pop() 会直接从列表中移除并返回最后一个元素,不需要使用 int() 来转换类型。
5. 你需要检查最后一个参数是否为 base ,并根据情况设定基数,然后再从列表中移除它。

下面是修正后的函数:

def mFun(*args, base=3):
    args = list(args)
    if args[-1] == 'base':
      base = args[-2]
      args = args[:-2]
    else:
      base = 3
    print(sum(args) * base)

mFun(1,2,3,4,3,3,4,2)


注意这里使用了 *args 来接收任意数量的参数,如果最后一个参数是'base',则取倒数第二个参数作为基数,并从参数列表中移除它。否则,基数默认为3。

这种实现方式虽然可以实现你的要求,但并不是最佳的做法,因为它要求用户在调用函数时显式地传入一个'base'字符串,这与Python的关键字参数使用习惯不符。在Python中,通常是直接使用关键字参数名作为参数进行传递,如 mFun(1, 2, 3, base=5) 。

一个更好的做法是将 base 作为一个关键字参数,像下面这样:

def mFun(*args, base=3):
    print(sum(args) * base)

mFun(1,2,3,4,3,3,4,2, base=5)


这样就可以在调用函数时直接使用 base=5 来指定基数,而不需要在参数列表中传入一个'base'字符串。

sfqxx 发表于 2023-7-9 22:54:15

isdkz 发表于 2023-7-9 22:53
你的函数有几个问题:

1. 函数名与问题描述中的不匹配,应为 mFun 而不是 sum3 。


{:10_324:}

isdkz 发表于 2023-7-9 22:54:51

sfqxx 发表于 2023-7-9 22:54


{:10_324:}

sfqxx 发表于 2023-7-9 23:35:06

isdkz 发表于 2023-7-9 22:54


啊!凭什么每次都是你!

isdkz 发表于 2023-7-9 23:45:49

sfqxx 发表于 2023-7-9 23:35
啊!凭什么每次都是你!

{:10_256:}

歌者文明清理员 发表于 2023-7-10 10:30:48

isdkz 发表于 2023-7-9 23:45


昨天我电脑被收了{:10_277:}原因是下午玩电脑被发现

isdkz 发表于 2023-7-10 10:39:01

歌者文明清理员 发表于 2023-7-10 10:30
昨天我电脑被收了原因是下午玩电脑被发现

让你play computer game

歌者文明清理员 发表于 2023-7-10 10:39:28

isdkz 发表于 2023-7-10 10:39
让你play computer game

我没玩游戏
页: [1]
查看完整版本: help memememelalala