鱼C论坛

 找回密码
 立即注册
查看: 9310|回复: 5

[已解决]for i in range(10)中i的理解

[复制链接]
发表于 2017-5-16 21:59:10 | 显示全部楼层 |阅读模式

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

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

x
for i in range(10):
    if i%2!=0:
        print(i)
        continue
    i+=2
    print(i)
这是小鲫鱼课堂中的一个例子。我学过c,所以这个i的理解有点矛盾。如果i是一个变量,那么循环体会修改i的值。但是这里并不是这样的。
在python 里的运行结果是这样的
2
1
4
3
6
5
8
7
10
9
>>>
按照c的理解应该是
i=0然后i=2;i=4-6-8
2
4
6
8
10
这就有矛盾了,当然Python中运行没有错误,所以for i in rang(10):中的i和循环体中的i 并不是一个变量,至少存放的值是不同的。
不知道大家是怎么理解这个i的?
最佳答案
2017-5-16 22:20:01
range(0,10)  就是一个迭代类型。  结果为[0,1,2,3,4,5,6,7,8,9]
for i in range(0,1)   i的值都遍历序列里面的每一个数,也就是说 每一次循环开始的时候,i就被重新赋值了~
第一次 i=0    0%2 == 0  i+=2  i=2  print(2)   ,返回循环 重新赋值i=1  如此循环下去直到i遍历0到9所有值 然后循环结束
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-5-16 22:02:30 | 显示全部楼层
  1. for i in range(10):
  2.     if i%2!=0:
  3.         print(i)
  4.         continue
  5.     i+=2
  6.     print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-16 22:09:02 | 显示全部楼层
刚看了in 这个成员运算符,它表示对象是否在这个列表或者字符串中;所以这个i 应该是遍历后面的序列。应该是这样理解的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-16 22:20:01 | 显示全部楼层    本楼为最佳答案   
range(0,10)  就是一个迭代类型。  结果为[0,1,2,3,4,5,6,7,8,9]
for i in range(0,1)   i的值都遍历序列里面的每一个数,也就是说 每一次循环开始的时候,i就被重新赋值了~
第一次 i=0    0%2 == 0  i+=2  i=2  print(2)   ,返回循环 重新赋值i=1  如此循环下去直到i遍历0到9所有值 然后循环结束
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-16 22:46:04 | 显示全部楼层
这个i不用定义类型吗?
for i in 5:
    print('I Love FishC')
这样会报错
而这样
i = 0
string = 'ILoveFishC.com'
while i < len(string):
    print(i)
    i += 1
没有错误。但是删掉i=0就会提示i没有定义。搞不懂呃
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-16 23:10:47 | 显示全部楼层
i  不用定义类型。i的返回值是什么类型 主要看in 后面的对象
例如 range(0,5)  返回的类型是int
a = ['小甲鱼','小鱿鱼','小鲤鱼'] 类型是str数据类型的列表
for i in a   得到的就是
'小甲鱼'
'小鱿鱼'
'小鲤鱼'
in 后面跟的必须是一个可迭代的对象

for i in 5   5只是一个int类型的数值   不是一个可迭代的对象  不符合语法 所以报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 14:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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