鱼C论坛

 找回密码
 立即注册
查看: 3725|回复: 35

[技术交流] Python:每日一题 197

[复制链接]
发表于 2018-8-12 12:50:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-8-15 09:50 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
已知有如下的变量
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5 * 12.33
  5. var5 = [1, 1, 2, 3, 5, 8]
复制代码

要求使用循环将上述变量print出来。


==============================
本题是想考察大家对globals()和locals()的理解,python中每个变量、函数、类等的名字和值都存放在一个字典中,且名字是已字符串的形式表示。通过操纵字典可以取值赋值。

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2018-8-12 13:04:36 | 显示全部楼层
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5 * 12.33
  5. var5 = [1, 1, 2, 3, 5, 8]
  6. a = [var1,var2,var3,var4,var4,var5]
  7. for  i in a:
  8.     print(i)
复制代码


这样好么!!!

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 13:19:43 | 显示全部楼层
  1. i,j=0,0
  2. for i,j in list(locals().items())[-7:-2]:
  3.     print(i,':',j)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-12 13:30:36 | 显示全部楼层
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5 * 12.33
  5. var5 = [1, 1, 2, 3, 5, 8]

  6. var_names = []
  7. for i in range(1,6):
  8.     var_name = 'var' + str(i)
  9.     var_names.append(var_name)

  10. for each in var_names:
  11.     print(eval(each))
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 13:36:50 | 显示全部楼层
>>> var1 = 1
>>> var2 = "Python"
>>> var3 = 3.14
>>> var4 = 5 * 12.33
>>> var5 = [1,1,2,3,5,8]
>>> list1 = [var1,var2,var3,var4,var5]
>>> for each in list1:
        print(each,end='\n')

       
1
Python
3.14
61.65
[1, 1, 2, 3, 5, 8]

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 13:57:14 | 显示全部楼层
怎么赶脚是我理解错了
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5*12.33
  5. var5 = [1,1,2,3,5,8]
  6. list1 = [var1,var2,var3,var4,var5]
  7. for i in list1:
  8.     print(i)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 14:02:09 | 显示全部楼层
不知道理解的对不对,总觉得不应该这么简单……
  1. dic = {"var1": var1, "var2": var2, "var3": var3, "var4": var4, "var5": var5}
  2. for key, value in dic.items():
  3.     print(key, "=" , value)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 14:33:58 | 显示全部楼层
var1 = 5
var2 = "python"
var3 = 3.14
var4 = 5 * 12.33
var5 = [1, 1, 2, 3, 5, 8]


def test197(*args):
    for i in args:
        print(i)

test197(var1,var2,var3,var4,var5)

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 17:40:38 | 显示全部楼层
  1. vars = locals()
  2. for i in range(1, 6):
  3.     print(vars[ 'var' + str(i) ])
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-12 17:58:14 | 显示全部楼层
lst = []
var1 = 5
var2 = "Python"
var3 = 3.14
var4 = 5 * 12.33
var5 = [1, 1, 2, 3, 5, 8]
lst.append(var1)
lst.append(var2)
lst.append(var3)
lst.append(var4)
lst.append(var5)
for i in range(len(lst)):
    print(lst[i])

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 18:28:26 | 显示全部楼层
def print_197():
    var1 = 5
    var2 = "Python"
    var3 = 3.14
    var4 = 5 * 12.33
    var5 = [1, 1, 2, 3, 5, 8]
    names=locals()
   
    for i in range(5):
        print(names['var'+str(i+1)])

if __name__ == '__main__':
    print_197()

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-12 19:37:37 | 显示全部楼层
  1. def a197():
  2.         var1 = 5
  3.         var2 = "Python"
  4.         var3 = 3.14
  5.         var4 = 5 * 12.33
  6.         var5 = [1, 1, 2, 3, 5, 8]
  7.         counter=1
  8.         for i in range(5):
  9.                 print(eval('var'+str(counter)))
  10.                 counter+=1
  11. a197()
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 19:43:27 | 显示全部楼层
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5 * 12.33
  5. var5 = [1, 1, 2, 3, 5, 8]
  6. for i in range(5):
  7.         if i == 0:
  8.                 print(var1)
  9.         if i == 1:
  10.                 print(var2)
  11.         if i == 2:
  12.                 print(var3)
  13.         if i == 3:
  14.                 print(var4)
  15.         if i == 4:
  16.                 print(var5)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 21:04:02 | 显示全部楼层
var1 = 5
var2 = "Python"
var3 = 3.14
var4 = 5 * 12.33
var5 = [1, 1, 2, 3, 5, 8]
var=[var1,var2,var3,var4,var5]
for i in var:
    print(i)

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 21:55:49 | 显示全部楼层
  1. 不知道我对这个题的理解是否有误~
  2. >>> var1 = 5
  3. >>> var2 = "Python"
  4. >>> var3 = 3.14
  5. >>> var4 = 5 * 12.33
  6. >>> var5 = [1, 1, 2, 3, 5, 8]
  7. >>> def fun( ls ):
  8.         i = 1
  9.         while True:
  10.                 t = "var"+str(i)
  11.                 if t in ls:
  12.                         print(eval(t))
  13.                 else:
  14.                         break
  15.                 i += 1

  16.                
  17. >>> fun(dir())
  18. 5
  19. Python
  20. 3.14
  21. 61.65
  22. [1, 1, 2, 3, 5, 8]
  23. >>>
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-12 22:05:42 | 显示全部楼层
本帖最后由 天圆突破 于 2018-8-13 17:13 编辑
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5 * 12.33
  5. var5 = [1, 1, 2, 3, 5, 8]

  6. #方法 1
  7. for i in range(1,6):
  8.     print(eval("var%d"%i))

  9. #方法2
  10. for i in range(2,6):
  11.     print(globals()["var%d"%i])

  12. #方法 3
  13. for i in range(2,6):
  14.     print(locals()["var%d"%i])

  15. #方法 4
  16. bar = type("bar",(), {"var%d"%i:globals()["var%d"%i] for i in range(1,6)})
  17. for i in range(1,6):
  18.     print(getattr(bar, "var%d"%i))
复制代码

  1. 回字有四种写法.....
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2018-8-12 22:16:15 | 显示全部楼层
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5 * 12.33
  5. var5 = [1, 1, 2, 3, 5, 8]
  6. for i in range(1,6):
  7.     var='var'+str(i)
  8.     print(locals()[var])
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-13 09:02:29 | 显示全部楼层
  1. def func0():
  2.     yield 5
  3.     yield "python"
  4.     yield 3.14
  5.     yield 5 * 12.33
  6.     yield [1, 1, 2, 3, 5, 8]
  7. for i in func0():
  8.     print(i)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-13 09:06:50 | 显示全部楼层
  1. var1 = 5
  2. var2 = "Python"
  3. var3 = 3.14
  4. var4 = 5 * 12.33
  5. var5 = [1, 1, 2, 3, 5, 8]

  6. for i in range(1,6):
  7.     print(eval("var%s"%i))
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2018-8-13 09:28:19 | 显示全部楼层
var1 = 5
var2 = "Python"
var3 = 3.14
var4 = 5 * 12.33
var5 = [1, 1, 2, 3, 5, 8]

name = locals()
for i in range(1, 6):
    print(name['var' + str(i)])

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 06:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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