kevinz007 发表于 2018-9-21 21:01:38

新手求助(函数里的 *param 怎么用 input 让使用者自己输入的内容传递到 *param)

请问这么一个问题
函数里的 *param 怎么用 input 让使用者自己输入的内容传递到 *param 里。
如小甲鱼的下面这个答案:

def mFun(*param, base=3):
    result = 0
    for each in param:
      result += each
    result *= base
    print('结果是:', result)

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

如何从 外部去利用 inpu() 来把1-5 这些数字输入到 *param这个多个变量里。
试了各种办法,网上也没查到方法,特来求助,谢谢。

塔利班 发表于 2018-9-21 21:10:47

本帖最后由 塔利班 于 2018-9-21 21:13 编辑

Input传入的是字符串,你的字符串几个数字以什么来间隔,需要拆分
结果相当于传入的只是一个变量进去处理,除非你是类似这种玩字符操作
def mFun(*param, base=3):
    result = ''
    for each in param:
      result += each
    result *= base
    print('结果是:', result)
mFun(input('输入字符'),base=5)

冬雪雪冬 发表于 2018-9-21 21:16:25

temp = input('输入数字:')
mFun(*map(int, temp.split(',')))

凌九霄 发表于 2018-9-21 21:38:29

本帖最后由 凌九霄 于 2018-9-21 21:43 编辑

还是楼上厉害,考虑了半天,也想了*的形式。就是没想到把那个直接放函数里

RIXO 发表于 2018-9-21 21:51:00

冬雪雪冬 发表于 2018-9-21 21:16


*号在这里是什么意思啊,怎么可以直接解析map函数啊,还有其他的快速解析方法吗

冬雪雪冬 发表于 2018-9-21 22:03:50

RIXO 发表于 2018-9-21 21:51
*号在这里是什么意思啊,怎么可以直接解析map函数啊,还有其他的快速解析方法吗

*是解包,将map解成若干个数字作为mFun的参数

kevinz007 发表于 2018-9-22 14:11:56

塔利班 发表于 2018-9-21 21:10
Input传入的是字符串,你的字符串几个数字以什么来间隔,需要拆分
结果相当于传入的只是一个变量进去处理 ...

谢谢帮忙,不过貌似无法达到效果。
原题的目的是:
计算打印所有参数的和乘以基数(base=3)的结果。

不过你说的貌似没有效果。

塔利班 发表于 2018-9-22 14:20:22

kevinz007 发表于 2018-9-22 14:11
谢谢帮忙,不过貌似无法达到效果。
原题的目的是:
计算打印所有参数的和乘以基数(base=3)的结果。


恩,所以各路大神都是将其进行处理,不是一步传参的

kevinz007 发表于 2018-9-22 16:37:05

冬雪雪冬 发表于 2018-9-21 21:16


谢谢你的答案,有效,不过可否讲解的详细点,
*map(int, temp.split(',')))
具体是怎么传递的。我没有理解,split 和 * map 貌似我还没接触过,多谢了。

kevinz007 发表于 2018-9-22 16:37:41

塔利班 发表于 2018-9-22 14:20
恩,所以各路大神都是将其进行处理,不是一步传参的

哦,明白了,就像三楼那位的传递过去的,谢谢了

kevinz007 发表于 2018-9-27 20:53:53

冬雪雪冬 发表于 2018-9-21 21:16


完全搞明白了,谢谢
页: [1]
查看完整版本: 新手求助(函数里的 *param 怎么用 input 让使用者自己输入的内容传递到 *param)