三与七之间 发表于 2017-10-15 18:06:22

while循环和for..in 的区别是什么?


def findstr(string,substring):
    n=0
    times=0
    for n in range(len(string)):
      if n ==len(string) -1:
            break
      if n == len(string)-2:
            string=string+' '   
      if string == substring:
            times += 1
      n += 1
    print('子字符串在目标字符串中共出现%d次'%times)
   
string = input('请输入目标字符串:')
substring=input('请输入子字符串(两个字符):')
findstr(string,substring)
      

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

def findstr(string,substring):
    n=0
    times=0
    q=True
    while q:
      if n ==len(string) -1:
            q=False
      if n == len(string)-2:
            string=string+' '   
      if string == substring:
            times += 1
      n += 1
    print('子字符串在目标字符串中共出现%d次'%times)
   
string = input('请输入目标字符串:')
substring=input('请输入子字符串(两个字符):')
findstr(string,substring)
      
结果就出现问题了,下图是运行的状况,为啥输入substring后,再打回车压根就没动静呢?一直回车也不出结果。。。。这是为甚?不是说在某些时候,while循环和for in是可以做到相同的效果的吗?

冬雪雪冬 发表于 2017-10-15 18:54:42

在第一个程序中并没有执行
      if n ==len(string) -1:
            break
而是老老实实的运行完for循环。
这是你在循环体内改变了string,使它的长度增加。
所以在while循环中就永远无法达到n ==len(string) -1

丶忘却的年少o 发表于 2017-10-15 19:25:41

这个应该是python吧?发错板块了,亲

三与七之间 发表于 2017-10-15 19:26:23

冬雪雪冬 发表于 2017-10-15 18:54
在第一个程序中并没有执行
      if n ==len(string) -1:
            break


我明白了。谢谢~~~

三与七之间 发表于 2017-10-15 19:26:54

丶忘却的年少o 发表于 2017-10-15 19:25
这个应该是python吧?发错板块了,亲

嗯,,,的确是,没看清楚,,,,,不过我已经明白啦

丶忘却的年少o 发表于 2017-10-15 19:28:30

三与七之间 发表于 2017-10-15 19:26
嗯,,,的确是,没看清楚,,,,,不过我已经明白啦

明白就好,加油学习吧{:10_268:}

三与七之间 发表于 2017-10-15 19:30:17

丶忘却的年少o 发表于 2017-10-15 19:28
明白就好,加油学习吧

好哒{:7_112:}
页: [1]
查看完整版本: while循环和for..in 的区别是什么?