鱼C论坛

 找回密码
 立即注册
查看: 1121|回复: 7

第18课,动动手最后一题

[复制链接]
发表于 2018-2-13 19:13:12 | 显示全部楼层 |阅读模式

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

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

x
def findstr(desstr,keystr):
    desstr="im"
    for  keystr in desstr:
        return desstr.count(keystr)
desstr=input("目标字符串为:")

keystr=input("关键字符为:")

print(findstr(desstr,keystr))

这么写没报错,但是运行结果错误,哪位大神帮忙看看


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-13 19:28:53 | 显示全部楼层
你输入的测试代码是什么?
为什么你接受一个全局变量 desstr,又在内部函数创建了一个局部变量 desstr?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-13 20:10:28 From FishC Mobile | 显示全部楼层
局部变量覆盖了全局变量吧desstr
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-13 20:31:00 | 显示全部楼层
大头目 发表于 2018-2-13 20:10
局部变量覆盖了全局变量吧desstr

把全局变量改成a和b还是不行,结果总是1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-13 20:42:38 | 显示全部楼层
大头目 发表于 2018-2-13 20:10
局部变量覆盖了全局变量吧desstr

把全局变量改成a和b还是返回1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-13 20:44:28 | 显示全部楼层
修改全局变量是没用的,你函数内部的循环使用的一直是局部变量。
而且如果你是想获得关键字符在目标字符串里的个数的话。函数根本不是这么写,应该这样写。
  1. def findstr(desstr,keystr):
  2.     count = desstr.count(keystr)
  3.     return count
  4. desstr=input("目标字符串为:")

  5. keystr=input("关键字符为:")

  6. print(findstr(desstr,keystr))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-14 08:04:38 From FishC Mobile | 显示全部楼层
走到return函数就结束了,所以你这个for循环没用,等于只走了一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-14 23:42:39 From FishC Mobile | 显示全部楼层
知道用count,还写你这个函数干什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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