由你的程序,可以看出你对字符串处理有两个知识点不扎实
第一,字符串备份写的不对,你这不是备份只是又起了一个名字,备份应该这么写:a1=a[:]
第二,对index的使用方法了解不够,1)index作用是查找子串的位置,是可以有三个参数的,第一个参数是子串,第二个参数是起始位置,第三个参数是结束位置,所以说没必要给字符串a备份,然后查找的时候一直切片,第二次查找的时候可以直接a.index(b,c+1);2)index只有在包含子串的时候有效,能得到返回值,若不包含子串,那么是会报错的。
所以有两种处理方法:一、依然使用index,将之放在try…except…中,抛出异常的时候,说明已经没有子串了,这时候return;二、不用index,改用find,find的作用和index基本一样,不同点就是没有找到的话,find返回-1,而index会报错
- #使用index
- def findstr():
- a = input("请输入目标字符串:")
- b = input("请输入子字符串(两个字符):")
- i=0
- try:
- c = a.index(b) # 定位当下的首个出现的子字符串
- except ValueError:
- return i
- while True:
- i +=1
- try:
- c = a.index(b,c+1)
- except ValueError:
- return i
- print("子字符串在目标字符串中共出%d次" % findstr() )
复制代码- #使用find
- def findstr():
- a = input("请输入目标字符串:")
- b = input("请输入子字符串(两个字符):")
- i=0
- c = a.find(b) # 定位当下的首个出现的子字符串
- while c!=-1:
- i +=1
- c = a.find(b,c+1)
- return i
- print("子字符串在目标字符串中共出%d次" % findstr() )
复制代码