justdbmore 发表于 2020-2-25 22:35:31

018函数灵活即强大 小白提问时间

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

以下为给出的标准答案:

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)

请求大神讲解一下本题的程序是怎样一个运行顺序,里面的程序看懂了,但是运行顺序不太理解,比如为什么要把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)



txxcat 发表于 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 == subStr:
                if desStr == subStr:
                  count += 1
                  
      print('子字符串在目标字符串中共出现 %d 次' % count)#函数的最后一句

desStr = input('请输入目标字符串:')   #程序真正的第一行
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)

你的程序把list那两行去掉就可以了,list是转成列表,每个字母都是一个独立的列表元素,没法用count来计数。

justdbmore 发表于 2020-2-27 18:21:08

多谢兄弟!兄弟纽币!
页: [1]
查看完整版本: 018函数灵活即强大 小白提问时间