鱼C论坛

 找回密码
 立即注册
查看: 2534|回复: 6

[已解决]请教:python与C的循环变量问题

[复制链接]
发表于 2017-5-25 02:35:23 | 显示全部楼层 |阅读模式

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

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

x
为什么循环体中循环变量的改变不会影响到循环条件中的循环变量呢?具体例子如下:

for i in rang(10)
      i=i+2
      print(i,end=' ')

打印结果是:2 3 4 5 6 7 8 9 10 11

若按照C语言的思路答案应该是:2,4,6,8,10

请教i从0开始,i+2后就已经成了2了,怎么for中的i又变成1了呢?

最佳答案
2017-5-25 09:14:35
本帖最后由 sunnychou 于 2017-5-25 09:16 编辑

for 循环中 i 取值在0-9之间,而i = i+2,有是一个新变量,我从内存方面给你展示了一下,你运行代码发现i的内存空间每次都发生变化,而i = i+2也在变化,但是他们属于不同的内存空间,并不是同一个i,这样你应该明白了把,

  1. for i in range(10):
  2.         id(i)
  3.         i=i+2
  4.         id(i)
  5.         print(i,end='  ')
  6.         print("*"*5)
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-5-25 07:59:18 | 显示全部楼层
for i in range(10)
语法意思就是  i  遍历 从0 到9这十个数。
在此情况下  i = i+2
所以 I的值就是 2 到11了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-25 09:14:35 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunnychou 于 2017-5-25 09:16 编辑

for 循环中 i 取值在0-9之间,而i = i+2,有是一个新变量,我从内存方面给你展示了一下,你运行代码发现i的内存空间每次都发生变化,而i = i+2也在变化,但是他们属于不同的内存空间,并不是同一个i,这样你应该明白了把,

  1. for i in range(10):
  2.         id(i)
  3.         i=i+2
  4.         id(i)
  5.         print(i,end='  ')
  6.         print("*"*5)
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-25 09:18:23 | 显示全部楼层
还有同学,你就 写了这么短的代码,写错了好多语法,首先range,然后for循环没有分号":",又是中文的字符“,”多注意书写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-5-25 10:31:28 | 显示全部楼层
for是对可迭代对象的遍历,而while循环才更接近c语言的for循环。
  1. i = 0
  2. while i < 10:
  3.     i += 2
  4.     print(i, end = ' ')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-25 19:03:15 | 显示全部楼层
在python中的for i in range(10)中每次循环开始的i的值依次为0,1,2,3,4...9,循环结束后即使i的值变了,下一次循环i的值还会回到原来的值+1,这跟C的for不一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-26 01:11:27 | 显示全部楼层
sunnychou 发表于 2017-5-25 09:18
还有同学,你就 写了这么短的代码,写错了好多语法,首先range,然后for循环没有分号":",又是中文的字符“ ...

谢谢,我会多注意的!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-27 17:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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