鱼C论坛

 找回密码
 立即注册
查看: 1636|回复: 2

第十七的课后练习第3题

[复制链接]
发表于 2018-2-1 16:34:44 | 显示全部楼层 |阅读模式

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

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

x
def findStr(desStr, subStr):
    count = 0
    length = len(desStr)
    if subStr not in desStr:
        print('在目标字符串中未找到字符串!')
    else:
        for each1 in range(length-1):      
            if desStr[each1] == subStr[0]:
                if desStr[each1+1] == subStr[1]:
                    count += 1
                    
        print('子字符串在目标字符串中共出现 %d 次' % count)

desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)


这里的print('子字符串在目标字符串中共出现 %d 次' % count)
%d  放在字符串中? 然后% count? 这里面是怎么样进行的?

还有 for each1 in range(length-1):  
length为什么 要减一?   
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-1 16:40:26 | 显示全部楼层
你可以这么用
a=123
b='123'
c=1.23
print("d% %s %f"%(a,b,c))  %这里是格式化操作符,看书或者视频都有讲解

-1是因为你用了下标each+1,不能让索引值超出范围,例如列表L有9个元素,最后一个是L[8]不是L[9],因为索引值从0开始
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-1 17:15:05 | 显示全部楼层
‘%d’ % count:是格式化输出,%d 是输出十进制整型,也就是将count的值以十进制整型格式显示到%d的位置

length-1:是由于子串是两个字符,当目标字符串中搜索到子串的第一个字符时,再对比后一个字符是否与子串的第二个字符相同,因此使用desStr[each1+1] 取出后一个字符,当循环到倒数第二个字符时(length-1),each1为倒数第二个字符索引,那么each1+1就是最后一个字符的索引,如果length不减1,则索引会超出字符串的范围。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-27 16:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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