大佬了,小新又来求助了。
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:56 编辑
*b 代表的是b的地址,你在cmul函数里改完后,函数外的也会跟着变
a是cmul函数传进来的参数,执行完m=a后,a不变,而多了一个变量m
xiaosi4081 发表于 2021-6-17 19:55
*b 代表的是b的地址,你在cmul函数里改完后,函数外的也会跟着变
a是cmul函数传进来的参数,执行完m=a后 ...
??
这是 Python 啊..
*b是收集参数
看看这里:
【已解决】 Python 作业中 * 号的作用
https://fishc.com.cn/thread-183864-1-1.html
(出处: 鱼C论坛)
没学到,下一位{:10_266:} qiuyouzhi 发表于 2021-6-17 20:07
??
这是 Python 啊..
*b是收集参数
啊这...,平常看C看习惯了{:10_269:} 本帖最后由 灰晨 于 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]