鱼C论坛

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

[已解决]018课后习题问题

[复制链接]
发表于 2017-3-21 22:05:04 | 显示全部楼层 |阅读模式

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

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

x
018中课后习题动动手第二题
我是这么写的

  1. def findstr(subStr,desStr):
  2.     time = 0
  3.     if subStr not in desStr:
  4.         print('没有匹配的字符')
  5.     else:
  6.         time = desStr.count(subStr)
  7.         return time

  8.     print('匹配当前字符串的个数为:',time)

  9. desStr = str('am i am i is asljdaklj si ma')
  10. subStr = str('am')

  11. findstr(subStr,desStr)
复制代码



为什么没法返回具体数值呢?
谢谢大家~
最佳答案
2017-3-22 00:01:20


  1. def findstr(subStr,desStr):
  2.     time = 0
  3.     if subStr not in desStr:
  4.         print('没有匹配的字符')
  5.     else:
  6.         time = desStr.count(subStr)
  7.         print('匹配当前字符串的个数为:',time)
  8.         return time  

  9. desStr = str('am i am i is asljdaklj si ma')
  10. subStr = str('am')

  11. findstr(subStr,desStr)
  12.    
复制代码

你直接return了time ,也就不会执行下面的print()了,可以我这样写,函数里,碰到return后,return后面的代码就不会执行了,直接跳出函数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-21 22:08:37 | 显示全部楼层
忘记打印了。。

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

使用道具 举报

发表于 2017-3-22 00:01:20 | 显示全部楼层    本楼为最佳答案   


  1. def findstr(subStr,desStr):
  2.     time = 0
  3.     if subStr not in desStr:
  4.         print('没有匹配的字符')
  5.     else:
  6.         time = desStr.count(subStr)
  7.         print('匹配当前字符串的个数为:',time)
  8.         return time  

  9. desStr = str('am i am i is asljdaklj si ma')
  10. subStr = str('am')

  11. findstr(subStr,desStr)
  12.    
复制代码

你直接return了time ,也就不会执行下面的print()了,可以我这样写,函数里,碰到return后,return后面的代码就不会执行了,直接跳出函数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-22 09:07:24 | 显示全部楼层
time返回的不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-22 12:42:43 | 显示全部楼层
代码问题:return和print的层级不对
如果是我编写这个函数,我不会把print放在函数体内,既然要return time,那么就应该在得到time的值后,在函数体外进行判断和打印
  1. #coding=utf-8
  2. def findstr(subStr,desStr):
  3.     if subStr not in desStr:
  4.         time = 0
  5.     else:
  6.         time = desStr.count(subStr)
  7.     return time

  8. desStr = str('am i am i is asljdaklj si ma')
  9. subStr = str('am')
  10. times = findstr(subStr,desStr)
  11. if times > 0:
  12.     print('匹配当前字符串的个数为:', times)
  13. else:
  14.     print('未在字符串',desStr,'中查找到子串',subStr)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-22 16:38:21 | 显示全部楼层
return time不应该放在print语句之前,因为return语句执行之后,后面的语句就不会执行了,自然也就不会打印出内容了。建议修改:把return语句去掉,直接把print语句放在else语句里面就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-22 19:48:42 | 显示全部楼层
beyondmch 发表于 2017-3-22 12:42
代码问题:return和print的层级不对
如果是我编写这个函数,我不会把print放在函数体内,既然要return tim ...

十分感谢~学习了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-22 19:49:44 | 显示全部楼层
五行缺五行 发表于 2017-3-22 16:38
return time不应该放在print语句之前,因为return语句执行之后,后面的语句就不会执行了,自然也就不会打印 ...

谢谢~学习了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 08:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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