鱼C论坛

 找回密码
 立即注册
查看: 2532|回复: 1

【Python入门】18讲动动手2

[复制链接]
发表于 2020-2-23 12:05:11 | 显示全部楼层 |阅读模式

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

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

x
要求编写一个函数来统计一个长度为 2 的子字符串在另一个字符串中出现的次数。
想了好久感觉还是有点混乱,想请教大神们几个问题:
1.答案给的是:
  1. def findStr(desStr, subStr):
  2.     count = 0
  3.     length = len(desStr)
  4.     if subStr not in desStr:
  5.         print('在目标字符串中未找到字符串!')
  6.     else:
  7.         for each1 in range(length-1):      
  8.             if desStr[each1] == subStr[0]:
  9.                 if desStr[each1+1] == subStr[1]:
  10.                     count += 1
  11.                     
  12.         print('子字符串在目标字符串中共出现 %d 次' % count)    #为什么要格式化count而不是直接打印?

  13. desStr = input('请输入目标字符串:')
  14. subStr = input('请输入子字符串(两个字符):')
  15. findStr(desStr, subStr)
复制代码

2..统计字数可以用如果输入字符串的长度不为2,要怎么补充代码,引导操作者重新输入直到长度为2时再执行次数统计?
3.我写的程序怎么修改
  1. def findstr(longstr,str2):
  2.     length = len(str2)

  3.     if length != 2:
  4.         str2 = print('该子字符串长度不符,请重新输入(两个字符):')   #我想让操作者重新输入后直到字符串长度为2再执行,但是这里不知道该怎么改
  5.     else:
  6.         if str2 not in longstr:
  7.             print('在目标字符串中未找到字符串!')
  8.         else:
  9.             count = longstr.count(str2)         #不用答案的方法,直接用这个BIF来统计可以吗?

  10.             print('子字符串在目标字符串中共出现',count,'次')

  11. longstr = input('请输入目标字符串:')
  12. str2 = input('请输入子字符串(两个字符):')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-23 12:41:29 | 显示全部楼层
本帖最后由 jackz007 于 2020-2-23 13:00 编辑

        用现成的 BIF 应该是不符合题目要求。
        楼主试试这个代码
  1. #-*-coding:gbk-*-

  2. def findstr(longstr , str2):
  3.     c  = sum([1 for k in range(0 , len(longstr) , 2) if longstr[k : k + 2] == str2])
  4.     return c + sum([1 for k in range(1 , len(longstr) , 2) if longstr[k : k + 2] == str2])

  5. f1 , f2 = False , False
  6. while not f1 or not f2:
  7.     if not f1:
  8.         longstr = input('请输入目标字符串:') . strip()
  9.         if len(longstr) > 1:
  10.             f1 = True
  11.         else:
  12.             if len(longstr) == 0:
  13.                 break
  14.             else:
  15.                 print('目标字符串的长度必须大于 1!\n')
  16.     if f1 and not f2:
  17.         str2 = input('请输入子字符串(两个字符):') . strip()
  18.         if len(str2) == 2:
  19.             f2 = True
  20.         else:
  21.             if len(str2) == 0:
  22.                 break
  23.             else:
  24.                 print('字符串必须是两个字符!\n')
  25.     if f1 and f2:
  26.         count = findstr(longstr , str2)
  27.         if count > 0:
  28.             print('子字符串在目标字符串中共出现' , count , '次')
  29.         else:
  30.             print('在目标字符串中未找到字符串!')
复制代码

        运行实况:
  1. C:\Bin>python x2.py
  2. 请输入目标字符串:I love you , Do you love me?
  3. 请输入子字符串(两个字符):ov
  4. 子字符串在目标字符串中共出现 2 次

  5. C:\Bin>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 19:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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