鱼C论坛

 找回密码
 立即注册
查看: 1686|回复: 3

[已解决]第18讲课后题动动手第2题,将print()换为return,就无法返回答案,这是为什么?

[复制链接]
发表于 2021-12-7 11:43:45 | 显示全部楼层 |阅读模式

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

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

x
如果按照这个代码就可以反回3:

def findStr(desStr,subStr):

    if subStr not in desStr:
        print('未找到子字符串!')
    else:
        a = desStr.count(subStr)
        print(a)

desStr = input('请输入目标字符串:')
subStr = input('请输入需要查找的字符串:')
findStr(desStr,subStr)

desStr = You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.
subStr = im

但是换成如下(将print()换为return)就无法反会3:

def findStr(desStr,subStr):

    if subStr not in desStr:
        print('未找到子字符串!')
    else:
        a = desStr.count(subStr)
        return a

desStr = input('请输入目标字符串:')
subStr = input('请输入需要查找的字符串:')
findStr(desStr,subStr)

desStr = You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.
subStr = im

请教一下各位前辈,这是什么原因?
最佳答案
2021-12-7 12:00:24
本帖最后由 jackz007 于 2021-12-7 12:56 编辑

        return 只是返回了一个数值,你不打印,如何能看得到?
        所以,你得把此句
  1. findStr(desStr,subStr)
复制代码

        改成
  1. print(findStr(desStr,subStr))
复制代码

        再有,就是函数 findStr() 不可以选择性(或有条件)返回值,就是说,不可以把 return 放到属于 if 的语句块中。
  1. def findStr(desStr,subStr):
  2.     return desStr.count(subStr)

  3. desStr = input('请输入目标字符串:')
  4. subStr = input('请输入需要查找的字符串:')
  5. c = findStr(desStr,subStr))
  6. if c == 0:
  7.     print('未找到子字符串!')
  8. else:
  9.     print(c)
复制代码

    这样,程序响应就和你之前的代码一致起来了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-7 12:00:24 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-12-7 12:56 编辑

        return 只是返回了一个数值,你不打印,如何能看得到?
        所以,你得把此句
  1. findStr(desStr,subStr)
复制代码

        改成
  1. print(findStr(desStr,subStr))
复制代码

        再有,就是函数 findStr() 不可以选择性(或有条件)返回值,就是说,不可以把 return 放到属于 if 的语句块中。
  1. def findStr(desStr,subStr):
  2.     return desStr.count(subStr)

  3. desStr = input('请输入目标字符串:')
  4. subStr = input('请输入需要查找的字符串:')
  5. c = findStr(desStr,subStr))
  6. if c == 0:
  7.     print('未找到子字符串!')
  8. else:
  9.     print(c)
复制代码

    这样,程序响应就和你之前的代码一致起来了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-12-7 14:18:39 | 显示全部楼层
学习了学习了return不要放在if语块,谢谢~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-7 14:22:26 | 显示全部楼层
jackz007 发表于 2021-12-7 12:00
return 只是返回了一个数值,你不打印,如何能看得到?
        所以,你得把此句

学习了学习了return不要放在if语块,谢谢~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-24 12:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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