鱼C论坛

 找回密码
 立即注册
查看: 1806|回复: 4

[已解决]想问一下python中 while 和 for循环的不同 求大手子拯救

[复制链接]
发表于 2017-7-21 14:00:25 | 显示全部楼层 |阅读模式

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

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

x
一直以为for和while循环是同样的用法。。。 直到今天复习break和continue的时候用了一个非常简单的代码测试了下发现了问题。
如下code
  1. i = 0
  2. L = ['Bart', 'Lisa', 'Adam']
  3. length = len(L)
  4. for i in range(length):
  5.     if i == 1:
  6.         continue
  7.     print("Hello", L[i])
  8.     i = i+1
复制代码


这一段代码运行正常 但是把for换成了while 就什么都不打印
  1. i = 0
  2. L = ['Bart', 'Lisa', 'Adam']
  3. length = len(L)
  4. while i in range(length):
  5.     if i == 1:
  6.         continue
  7.     print("Hello", L[i])
  8.     i = i+1
复制代码

但是后来看了看代码 加了一行 i = i+1 在continue之前
  1. i = 0
  2. L = ['Bart', 'Lisa', 'Adam']
  3. length = len(L)
  4. while i in range(length):
  5.     if i == 1:
  6.         i = i+1
  7.         continue
  8.     print("Hello", L[i])
  9.     i = i+1
复制代码

这段代码就运行成功了,现在处于一种仔细看代码知道怎么能改对但是并不知道为什么要这么改的阶段

后来又试了试把continue改成了break试了试
  1. i = 0
  2. L = ['Bart', 'Lisa', 'Adam']
  3. length = len(L)
  4. for i in range(length):
  5.     if i == 1:
  6.         break
  7.     print("Hello", L[i])
  8.     i = i+1
复制代码

  1. i = 0
  2. L = ['Bart', 'Lisa', 'Adam']
  3. length = len(L)
  4. while i in range(length):
  5.     if i == 1:
  6.         break
  7.     print("Hello", L[i])
  8.     i = i+1
复制代码

这里就可以完美实现。。。。。。。。。。。

所以说这是continue的区别 和 break的区别还是 while和for的区别
另外还想问下 continue是跳出最近的一个for或者while循环还是跳出if语句。 求大手子拯救 谢谢
最佳答案
2017-7-21 15:16:28
1,这一段代码运行正常 但是把for换成了while 就什么都不打印
for 跟 while 本来就是两个不同功能的语句;for 用来计数, while 用来判断 真假。就算互换用也得看情况,要换也不会换成你这样的 for i in range(length): while i in range(length):

2,但是后来看了看代码 加了一行 i = i+1 在continue之前,这段代码就运行成功了.
在同一循环代码块内continue后面的语不会被执行 如:
    if i == 1:
        i = i+1
        continue
    print("Hello", L) #当if成功后执行continue,这不会被执行
    i = i+1 #当if成功后执行continue,这不会被执行
3,另外还想问下 continue是跳出最近的一个for或者while循环还是跳出if语句
continue在哪个循环体内就跳出哪个循环体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-21 14:27:14 | 显示全部楼层
break在哪一个循环里就跳出哪一个循环~
  1. >>> while True:
  2.         for i in range(3):
  3.                 break
  4.         print('已经跳出for循环!')
  5.         break

  6. 已经跳出for循环!
  7. >>>
复制代码


for 循环是将序列里的元素一个一个提取出来,提取完循环就结束了
while 循环是死循环,只有while 后面的条件为False或用break才可以停止循环~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-21 15:16:28 | 显示全部楼层    本楼为最佳答案   
1,这一段代码运行正常 但是把for换成了while 就什么都不打印
for 跟 while 本来就是两个不同功能的语句;for 用来计数, while 用来判断 真假。就算互换用也得看情况,要换也不会换成你这样的 for i in range(length): while i in range(length):

2,但是后来看了看代码 加了一行 i = i+1 在continue之前,这段代码就运行成功了.
在同一循环代码块内continue后面的语不会被执行 如:
    if i == 1:
        i = i+1
        continue
    print("Hello", L) #当if成功后执行continue,这不会被执行
    i = i+1 #当if成功后执行continue,这不会被执行
3,另外还想问下 continue是跳出最近的一个for或者while循环还是跳出if语句
continue在哪个循环体内就跳出哪个循环体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-21 16:12:40 | 显示全部楼层
ba21 发表于 2017-7-21 15:16
1,这一段代码运行正常 但是把for换成了while 就什么都不打印
for 跟 while 本来就是两个不同功能的语句; ...

多谢大手子 学到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-21 16:13:16 | 显示全部楼层
MSK 发表于 2017-7-21 14:27
break在哪一个循环里就跳出哪一个循环~

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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