|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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])
问一下哪有错哟
你的函数有几个问题:
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'字符串。
|
|