鱼C论坛

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

[已解决]while循环和for..in 的区别是什么?

[复制链接]
发表于 2017-10-15 18:06:22 | 显示全部楼层 |阅读模式

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

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

x

  1. def findstr(string,substring):
  2.     n=0
  3.     times=0
  4.     for n in range(len(string)):
  5.         if n ==len(string) -1:
  6.             break
  7.         if n == len(string)-2:
  8.             string=string+' '     
  9.         if string[n:n+2] == substring:
  10.             times += 1
  11.         n += 1
  12.     print('子字符串在目标字符串中共出现%d次'%times)
  13.    
  14. string = input('请输入目标字符串:')
  15. substring=input('请输入子字符串(两个字符):')
  16. findstr(string,substring)
  17.       
复制代码


上面是我在做python基础教程18讲动手题第2讲时写的代码(忽略掉我没有判断到底是否存在子字符的情况),运行基本没问题,可是呢,其实我头一开始是用的while循环写的(表问我为什么脑回路这么新奇 ):

  1. def findstr(string,substring):
  2.     n=0
  3.     times=0
  4.     q=True
  5.     while q:
  6.         if n ==len(string) -1:
  7.             q=False
  8.         if n == len(string)-2:
  9.             string=string+' '     
  10.         if string[n:n+2] == substring:
  11.             times += 1
  12.         n += 1
  13.     print('子字符串在目标字符串中共出现%d次'%times)
  14.    
  15. string = input('请输入目标字符串:')
  16. substring=input('请输入子字符串(两个字符):')
  17. findstr(string,substring)
  18.       
复制代码

结果就出现问题了,下图是运行的状况,为啥输入substring后,再打回车压根就没动静呢?一直回车也不出结果。。。。这是为甚?不是说在某些时候,while循环和for in是可以做到相同的效果的吗?
最佳答案
2017-10-15 18:54:42
在第一个程序中并没有执行
        if n ==len(string) -1:
            break
而是老老实实的运行完for循环。
这是你在循环体内改变了string,使它的长度增加。
所以在while循环中就永远无法达到n ==len(string) -1
1111111111.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-15 18:54:42 | 显示全部楼层    本楼为最佳答案   
在第一个程序中并没有执行
        if n ==len(string) -1:
            break
而是老老实实的运行完for循环。
这是你在循环体内改变了string,使它的长度增加。
所以在while循环中就永远无法达到n ==len(string) -1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-15 19:25:41 | 显示全部楼层
这个应该是python吧?发错板块了,亲
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-15 19:26:23 | 显示全部楼层
冬雪雪冬 发表于 2017-10-15 18:54
在第一个程序中并没有执行
        if n ==len(string) -1:
            break

我明白了。谢谢~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-15 19:26:54 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-15 19:25
这个应该是python吧?发错板块了,亲

嗯,,,的确是,没看清楚,,,,,不过我已经明白啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-15 19:28:30 | 显示全部楼层
三与七之间 发表于 2017-10-15 19:26
嗯,,,的确是,没看清楚,,,,,不过我已经明白啦

明白就好,加油学习吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-15 19:30:17 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-15 19:28
明白就好,加油学习吧

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-30 15:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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