|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
初学python,今天写课后作业的时候突然想到对这个程序
>>> import random
>>> x = random.randint(1,10)
>>> y = random.randint(1,10)
>>> z = random.randint(1,10)
>>> def small_one(x,y,z):
small = x if (x<y and x<z) else (y if y < z else z)
return(small)
>>> small_one(x,y,z)
1
>>> x
1
>>> y
2
>>> z
4
因为x,y,z都是随机的,我无法知道他们具体的值是多少,程序返回的只是最小的值,并不能反馈出是哪个参数最小,
有什么办法能把程序的参数变量名一些返回出来
比如最后返回出的就是small_one(x,y,z)
x = 1
本帖最后由 yjsx86 于 2018-1-24 04:48 编辑
虽然可以这么做 但是不建议 因为传给函数的其实是内存地址 而非变量名
可以实现这个功能 但确实是没意义
- import random
- def small_one(ag1, ag2, ag3):
- small = ag1 if (ag1 < ag2 and ag1 < ag3) else (ag2 if ag2 < ag3 else ag3)
- for name in globals():
- if id(small) == id(globals()[name]):
- return name
- for i in range(10):
- x,y,z = random.choices(range(10),k=3)
- string = 'x=%d,y=%d,z=%d 最小数的变量名是 : %s' % (x,y,z,small_one(x,y,z))
- print(string)
- # 结果
- # 这里的结果有点问题,会出现形如
- # x=3,y=4,z=3 最小数的变量名是 : i ,这里的 i 是for循环那里的 i
- # 当最小数是 3 , i 也刚好循环到3时会发生 这里你需要再做一次判定了
- x=9,y=8,z=2 最小数的变量名是 : z
- x=5,y=5,z=4 最小数的变量名是 : z
- x=5,y=5,z=0 最小数的变量名是 : z
- x=3,y=4,z=3 最小数的变量名是 : i
- x=1,y=8,z=2 最小数的变量名是 : x
- x=5,y=6,z=0 最小数的变量名是 : z
- x=6,y=2,z=5 最小数的变量名是 : y
- x=3,y=1,z=1 最小数的变量名是 : y
- x=9,y=2,z=7 最小数的变量名是 : y
- x=0,y=7,z=0 最小数的变量名是 : x
复制代码
|
|