鱼C论坛

 找回密码
 立即注册
查看: 2566|回复: 5

获取函数的参数并生成列表

[复制链接]
发表于 2016-3-6 14:35:12 | 显示全部楼层 |阅读模式
5鱼币
假设我定义了一系列函数:
  1. def f(x):
  2.     return x*2
  3. def g(x,y):
  4.     return x+y
  5. def h(x,y,z):
  6.     return x*y/z
复制代码

现在试图输入:
  1. h('abcd',2,3)
复制代码

此时会报错,原因是x不能为字符串。那么能否通过将用户输入的参数生成一个列表,并判断每个参数的属性,若不符合要求(此例中的x不符合“必须为数字”的要求)则对该参数进行一系列处理(比如,若是字符串,则返回该字符串的长度)?
P.S.要求不修改函数本身。可以另行定义函数。

诸位大神走过路过不要吝惜才华,棒棒小弟~

最佳答案

查看完整内容

可以在写一个转换函数,然后在使用函数里面映射参数 例子如下: def convert(a): if isinstance(a, str): a = len(a) return a def h(x,y,z): x, y, z = map(convert, [x, y, z]) return x*y/z >>>h('abcd', 2, 3) 2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-6 14:35:13 | 显示全部楼层
可以在写一个转换函数,然后在使用函数里面映射参数
例子如下:
def convert(a):
    if isinstance(a, str):
        a = len(a)
    return a

def h(x,y,z):
    x, y, z = map(convert, [x, y, z])
    return x*y/z

>>>h('abcd', 2, 3)
2

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +1 收起 理由
hldh214 + 5 + 5 + 1 热爱鱼C^_^

查看全部评分

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

使用道具 举报

发表于 2016-3-6 14:46:31 | 显示全部楼层
  1. # l1是用户的输入生成的列表, 下面对l1进行处理
  2. l1 = ['each', 1, 2, '3']
  3. l2 = []
  4. for each in l1:
  5.     if isinstance(each, str):
  6.         each = len(each)
  7.     l2.append(each)
  8. print(l2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-6 15:40:04 | 显示全部楼层

关键是怎样提取用户的参数并生成这个列表??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-6 15:40:51 | 显示全部楼层

关键是怎样提取用户的参数并生成这个列表??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-6 17:44:24 | 显示全部楼层
shadowrocker 发表于 2016-3-6 15:40
关键是怎样提取用户的参数并生成这个列表??

input呀....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 22:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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