为了账号安全,请及时绑定邮箱和手机立即绑定

求老师解答,我不知道这个运算里面是如何传值的

我这样为什么不可以,求大神解释,这在Java里面是成立的啊

L = [75, 92, 59, 68]
a = 0.0
for a in L:
   a += a
   print(a)
   #求告知为什么这里的a这么奇怪,是如何得出的
print(a / len(L))


正在回答

4 回答

#这里a+=a其实就是a=a+a,那就是遍历L集合中每个元素,然后求两倍结果,所以打印出来是两倍数据
最后a停留在68的两倍就是136,136/len(L)=34

0 回复 有任何疑惑可以回复我~
#1

shuqin2333 提问者

非常感谢!
2017-01-07 回复 有任何疑惑可以回复我~

第一行的a与for中的a是不一样的。

代码中同名变量的作用域是不同。for中的a的作用域固定为for循环中了,而for外的那个a的作用域只能作用于for循环之外的范围了。


0 回复 有任何疑惑可以回复我~

这个就跟迭代器一个道理啊,a只是在for循环里充当一个变量用来存值。所以就是等于第一轮a=75,所以打印出150,第二轮a=92,打印出184,以此类推。最后一轮a=68,打印出136,所以a最终等于136,所以a/len(L)=34

0 回复 有任何疑惑可以回复我~

a = 0.0 #这里a已经定义了

for a in L#这里又定义了一个a ,变量名称一样当然报错

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

求老师解答,我不知道这个运算里面是如何传值的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信