| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
- 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[n:n+2] == substring:
 
 -             times += 1
 
 -         n += 1
 
 -     print('子字符串在目标字符串中共出现%d次'%times)
 
 -     
 
 - string = input('请输入目标字符串:')
 
 - substring=input('请输入子字符串(两个字符):')
 
 - findstr(string,substring)
 
 -       
 
  复制代码 
 
上面是我在做python基础教程18讲动手题第2讲时写的代码(忽略掉我没有判断到底是否存在子字符的情况),运行基本没问题,可是呢,其实我头一开始是用的while循环写的(表问我为什么脑回路这么新奇  ): 
 
- 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[n:n+2] == substring:
 
 -             times += 1
 
 -         n += 1
 
 -     print('子字符串在目标字符串中共出现%d次'%times)
 
 -     
 
 - string = input('请输入目标字符串:')
 
 - substring=input('请输入子字符串(两个字符):')
 
 - findstr(string,substring)
 
 -       
 
  复制代码 
结果就出现问题了,下图是运行的状况,为啥输入substring后,再打回车压根就没动静呢?一直回车也不出结果。。。。这是为甚?不是说在某些时候,while循环和for in是可以做到相同的效果的吗? 
在第一个程序中并没有执行 
        if n ==len(string) -1: 
            break 
而是老老实实的运行完for循环。 
这是你在循环体内改变了string,使它的长度增加。 
所以在while循环中就永远无法达到n ==len(string) -1 
 
 
 |   
- 
 
 
 
 
 
 
 
 |