鱼C论坛

 找回密码
 立即注册
查看: 1605|回复: 9

[已解决]help memememelalala

[复制链接]
发表于 2023-7-9 22:45:36 | 显示全部楼层 |阅读模式

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

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

x
# 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([1,2,3,4,3,3,4,2])
问一下哪有错哟
最佳答案
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'字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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` 来接收不确定数量的输入参数。初始情况下,如果最后一个参数与基数相等,则将其剔除,否则将整个参数列表求和并乘以基数得到结果。最后,返回计算结果。

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

使用道具 举报

发表于 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'字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-9 22:54:15 | 显示全部楼层
isdkz 发表于 2023-7-9 22:53
你的函数有几个问题:

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

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

使用道具 举报

发表于 2023-7-9 22:54:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-9 23:35:06 From FishC Mobile | 显示全部楼层
isdkz 发表于 2023-7-9 22:54

啊!凭什么每次都是你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-9 23:45:49 | 显示全部楼层
sfqxx 发表于 2023-7-9 23:35
啊!凭什么每次都是你!

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

使用道具 举报

发表于 2023-7-10 10:30:48 | 显示全部楼层

昨天我电脑被收了原因是下午玩电脑被发现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-10 10:39:01 | 显示全部楼层
歌者文明清理员 发表于 2023-7-10 10:30
昨天我电脑被收了原因是下午玩电脑被发现

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

使用道具 举报

发表于 2023-7-10 10:39:28 | 显示全部楼层
isdkz 发表于 2023-7-10 10:39
让你play computer game

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 13:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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