迪哥,是你吗? 发表于 2021-12-7 11:43:45

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

如果按照这个代码就可以反回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

请教一下各位前辈,这是什么原因?

jackz007 发表于 2021-12-7 12:00:24

本帖最后由 jackz007 于 2021-12-7 12:56 编辑

      return 只是返回了一个数值,你不打印,如何能看得到?
      所以,你得把此句
findStr(desStr,subStr)
      改成
print(findStr(desStr,subStr))
      再有,就是函数 findStr() 不可以选择性(或有条件)返回值,就是说,不可以把 return 放到属于 if 的语句块中。
def findStr(desStr,subStr):
    return desStr.count(subStr)

desStr = input('请输入目标字符串:')
subStr = input('请输入需要查找的字符串:')
c = findStr(desStr,subStr))
if c == 0:
    print('未找到子字符串!')
else:
    print(c)
    这样,程序响应就和你之前的代码一致起来了。

迪哥,是你吗? 发表于 2021-12-7 14:18:39

学习了学习了{:5_108:}return不要放在if语块,谢谢~

迪哥,是你吗? 发表于 2021-12-7 14:22:26

jackz007 发表于 2021-12-7 12:00
return 只是返回了一个数值,你不打印,如何能看得到?
      所以,你得把此句



学习了学习了return不要放在if语块,谢谢~
页: [1]
查看完整版本: 第18讲课后题动动手第2题,将print()换为return,就无法返回答案,这是为什么?