鱼C论坛

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

[已解决]018函数灵活即强大 小白提问时间

[复制链接]
发表于 2020-2-25 22:35:31 | 显示全部楼层 |阅读模式

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

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

x
最后一题如下:
2. 编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为“You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,子字符串为“im”,函数执行后打印“子字母串在目标字符串中共出现 3 次”。

                               
登录/注册后可看大图


以下为给出的标准答案:

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)

请求大神讲解一下本题的程序是怎样一个运行顺序,里面的程序看懂了,但是运行顺序不太理解,比如为什么要把input 放在最后,print放在之前,为什么在最后又要加上一次findstr(desstr,substr),请鱼友帮小白的我解答一下,谢谢啦!


这是我模仿答案设计的一个代码,想通过字符串是否相同来进行判定,但是具体操作感觉有困难,每次都显示是“共出现0次”,请鱼友帮忙看看程序问题在哪里,有没有可能改对,非常感谢!
def times(a,b):
    if b not in a:
        print('在目标字符串中未找到字符串')
    else:
        a = list(a)
        b = list(b)
        c = a.count(b)
        print('子字符串在目标字符串中共出现',c ,'次')
a = input('请输入目标字符串:')
b = input('请输入子字符串(两个字符):')
times(a,b)



最佳答案
2020-2-26 00:05:08
def findStr(desStr, subStr):  #开始定义了一个函数findStr,接受两个参数,目标字符串和子字符串
    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)

你的程序把list那两行去掉就可以了,list是转成列表,每个字母都是一个独立的列表元素,没法用count来计数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 00:05:08 | 显示全部楼层    本楼为最佳答案   
def findStr(desStr, subStr):  #开始定义了一个函数findStr,接受两个参数,目标字符串和子字符串
    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)

你的程序把list那两行去掉就可以了,list是转成列表,每个字母都是一个独立的列表元素,没法用count来计数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 18:21:08 | 显示全部楼层
多谢兄弟!兄弟纽币!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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