rookie0912 发表于 2021-6-17 19:54:22

大佬了,小新又来求助了。

def cmul(a, *b):
    m = a
    for i in b:
      m *= i
    return m

print(eval("cmul({})".format(input())))
题目如下:计算任意输入数字的乘积
不理解第一行中的*b什么意思还有那个a什么意思,为什么不赋值就能计算?

xiaosi4081 发表于 2021-6-17 19:55:28

本帖最后由 xiaosi4081 于 2021-6-17 19:56 编辑

*b 代表的是b的地址,你在cmul函数里改完后,函数外的也会跟着变

a是cmul函数传进来的参数,执行完m=a后,a不变,而多了一个变量m

qiuyouzhi 发表于 2021-6-17 20:07:19

xiaosi4081 发表于 2021-6-17 19:55
*b 代表的是b的地址,你在cmul函数里改完后,函数外的也会跟着变

a是cmul函数传进来的参数,执行完m=a后 ...

??
这是 Python 啊..
*b是收集参数

Twilight6 发表于 2021-6-17 20:12:02


看看这里:

【已解决】 Python 作业中 * 号的作用
https://fishc.com.cn/thread-183864-1-1.html
(出处: 鱼C论坛)

Gacy 发表于 2021-6-17 20:32:05

没学到,下一位{:10_266:}

xiaosi4081 发表于 2021-6-17 20:43:49

qiuyouzhi 发表于 2021-6-17 20:07
??
这是 Python 啊..
*b是收集参数

啊这...,平常看C看习惯了{:10_269:}

灰晨 发表于 2021-6-18 11:10:37

本帖最后由 灰晨 于 2021-6-18 11:14 编辑

#a和b都是参数,*b表示参数可以传入无限个,并把所有的参数全放在一个元组内
def cmul(a, *b):
    m = a
#循环,让一开始m=a,之后一直乘传入的b元祖中的值,因为b元祖中可能有多个值。
    for i in b:
      m *= i
#m = m * i
    return m

print(eval("cmul({})".format(input())))
#"cmul({})"是个字符串,({})括号里的值是通过.format(input())来决定的
#format的具体用法自己找,记得小甲鱼的课也有说,这里input()的值可以输多个记得逗号隔开
#比如输入2,3,4,5,那么"cmul({})"就是"cmul(2,3,4,5)"
#eval()的作用是去引号将字符串"cmul({})"转换成函数cmul({}),这样就是调用cmul()
#比如"cmul(2,3,4,5)"就变成了cmul(2,3,4,5)
#cmul(2,3,4,5)时,a = 2,b = (3,4,5)
#调用后函数return m返回m,cmul(2,3,4,5)返回120,需要print()出来
页: [1]
查看完整版本: 大佬了,小新又来求助了。