关于第18讲 灵活即强大的问题求助
def findStr(desStr, subStr):count = 0
length = len(desStr)
if subStr not in desStr:
print('在目标字符串中未找到字符串!')
else:
for each1 in range(length-1):
if desStr == subStr:
if desStr == subStr:
count += 1
print('子字符串在目标字符串中共出现 %d 次' % count)
desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)
# 课后第18讲 灵活即强大
‘ ‘ ‘
上面这道题else语句里面的内容怎么理解?
‘ ‘ ‘ 本帖最后由 jackz007 于 2019-2-20 13:23 编辑
def findStr(desStr, subStr):
count = 0
length = len(desStr)
if subStr not in desStr: # 如果子字符串没有出现在目标字符串当中
print('在目标字符串中未找到字符串!') # 屏幕显示相应信息
else: # 否则
for each1 in range(length-1): # 循环,按索引 0 到 len(desStr) - 1 遍历字符串 desStr 中的每 1 个字符。之所以确定范围是 0 ~ len(desStr) - 1 是因为搜索是按照 2 个字符为 1 组进行的,总共需要循环len(desStr) - 1 次
if desStr == subStr: # 比较 desStr 是否与 subStr 的第 1 个字符相同
if desStr == subStr: # 如果前面的比较相等,再比较 desStr 是否与 subStr 的第 2 个字符相同
count += 1 # 如果前面两个字符比较都相同,那么,计数器加 1
print('子字符串在目标字符串中共出现 %d 次' % count) # 搜索完毕,屏显输出计数结果
desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)
其实,这个代码是有缺陷的,在极端情况下,例如:desStr = 'aaaaaaaaa' , subStr = 'aa' 的时候,这个代码给出的结果将是错误的。因为在没有找到 subStr 的情况下,each1 每次循环增 1 是正确的,但是,如果找到了,那么,增加的值显然应该是 2,而不应该还是 1。
所以,原代码应该这么改:
def findStr(desStr, subStr):
count = 0
length = len(desStr)
if subStr not in desStr:
print('在目标字符串中未找到字符串!')
else:
each1 = 0
while(each1 < length - 1):
if desStr == subStr:
if desStr == subStr:
each1 += 1
count += 1
each1 += 1
print('子字符串在目标字符串中共出现 %d 次' % count)
desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)
楼主不妨比较一下看看。 for each1 in range(length-1):
if desStr == subStr:
if desStr == subStr:
count += 1
具体如下:
1,用循环控制 遍历整个目标字符串;
2,由于需要到比对的子串是两个;
3,if desStr == subStr: 用if来判断子串的第一个在目标串的位置
4,在子串第一个成功的情况下再用 if desStr == subStr来判断子串的第二个是不是在目标串中紧跟其后的
页:
[1]