鱼C论坛

 找回密码
 立即注册
查看: 1593|回复: 11

[已解决]我把i = i+1为什么就不行了

[复制链接]
发表于 2017-12-27 21:34:34 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
i = 0
while i<100:
    if i%2 = 0:
       print  i
       i= i+1
   else:
       i = i+1

我把从else之后删除,为什么就不行了?
这一步有什么作用?
最佳答案
2018-1-4 11:29:27
Hone494 发表于 2018-1-3 18:19
谢谢,很详细,还有一个问题。这样缩进的话,会不会出现什么问题。
如果有类似的情况,是不是几乎都可以 ...

首先你要能清楚缩进的意思,缩进是为了什么?缩进其实就是程序执行的级别,缩进相同的程序属于一个级别的,每次我们打出if语句后:后边的缩进都跟if语句开头差4个空格,那就是说这个四个空格后的缩进属于if判断语句里边的,如果跟if开头对齐的说明他不输入if判断语句里边的,跟if是同级别的,个中韵味需要仔细体会,等你明白了就会有一种豁然开朗的感觉了,才能真正明白缩进在python中的地位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-27 21:38:18 | 显示全部楼层

i = 0
while i<100:
    if i%2 = 0:
       print  i
       i= i+1
   else:
       i = i+1

精简为:

i = 0
while i<100:
    if i%2 = 0:
       print  i
    i= i+1

这样能懂吧。意思就是不管if 也好,else也好。每次循环i 都自增1。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-27 21:42:19 From FishC Mobile | 显示全部楼层
因为如果直接去掉else,那么奇数情况下就是死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-27 21:55:02 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-12-27 21:42
因为如果直接去掉else,那么奇数情况下就是死循环

那么这个else里面的i+1怎么感觉是多余的,因为上面已经有一个增加的了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-27 21:55:51 From FishC Mobile | 显示全部楼层
ba21 发表于 2017-12-27 21:38
i = 0
while i

但是把else去掉就没反应了,我用的是pychram
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-28 08:05:27 From FishC Mobile | 显示全部楼层
Hone494 发表于 2017-12-27 21:55
那么这个else里面的i+1怎么感觉是多余的,因为上面已经有一个增加的了。

上面那个只有在if条件成立的时候才执行
你可以修改缩进来解决这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-28 09:54:43 | 显示全部楼层
if条件出错了  应该是if i % 2 == 0:  因为在python里面一个=号是赋值,两个=才是相等的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-28 10:03:40 From FishC Mobile | 显示全部楼层
两个=才是判相等,既然你每一步都要+1那就干脆把I+=1拿到外面来和if语句并列
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-28 10:21:45 | 显示全部楼层
Hone494 发表于 2017-12-27 21:55
那么这个else里面的i+1怎么感觉是多余的,因为上面已经有一个增加的了。


i = 0
while i<100:
    if i%2 = 0:#当i是偶数是执行print i 然后i+1继续检测,但是当i不是偶数时就跳去执行else
       print  i
       i= i+1
   else:   #当i不是偶数时执行i= i+1,执行完后继续循环,如果你把它去掉,程序检测到i不是偶数,但是你没告诉它怎么做就只能退出了。
       i = i+1
这个说明你应该能看明白吧!
然后我们再说下这个程序简化一下,注意最后一句的缩进
i = 0
while i<100:
    if i%2 = 0:
       print  i
    i= i+1 #这句与if语句对齐,说明这一句是与if语句是同一级别的,不管if语句里边的表达式成立与否都执行这一句(就是说不管是偶数还是奇数都要执行这一句),执行完后然后循环一直到99,如果你把这一句与print对齐,那么它就只在if语句里边执行,只执行偶数时的动作。
希望你能看明白,有不明白继续提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-29 17:28:19 | 显示全部楼层
辅助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-1-3 18:19:41 From FishC Mobile | 显示全部楼层
冰封雪舞 发表于 2017-12-28 10:21
i = 0
while i

谢谢,很详细,还有一个问题。这样缩进的话,会不会出现什么问题。
如果有类似的情况,是不是几乎都可以采用这个并列缩进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-4 11:29:27 | 显示全部楼层    本楼为最佳答案   
Hone494 发表于 2018-1-3 18:19
谢谢,很详细,还有一个问题。这样缩进的话,会不会出现什么问题。
如果有类似的情况,是不是几乎都可以 ...

首先你要能清楚缩进的意思,缩进是为了什么?缩进其实就是程序执行的级别,缩进相同的程序属于一个级别的,每次我们打出if语句后:后边的缩进都跟if语句开头差4个空格,那就是说这个四个空格后的缩进属于if判断语句里边的,如果跟if开头对齐的说明他不输入if判断语句里边的,跟if是同级别的,个中韵味需要仔细体会,等你明白了就会有一种豁然开朗的感觉了,才能真正明白缩进在python中的地位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 07:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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