miusa 发表于 2020-3-10 15:16:32

第18讲课后题,动动手代码问题求指点


1、编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数,我写的代码,若第五行用return,则返回值有(),用print,则返回值会多一个NONE,求解这是为什么,以及请指出我这个代码的问题:
def findstr(x,y):
    y = input('请输入目标字符串:')
    x = input('请输入子字符串(两个字符):')
    n = y.count(x)
    return('子字符串在目标字符串中共出现',n,'次')

print(findstr('lo','i love you'))

小甲鱼给出的参考答案没有用count,请问是为什么,是否有什么好处?
def findStr(desStr, subStr):
    count = 0
    length = len(desStr)
    if subStr not in desStr:
      print('在目标字符串中未找到字符串!')
    else:
      for each1 in range(length-1):      
            if desStr == subStr:
                if desStr == subStr:
                  count += 1
                  
      print('子字符串在目标字符串中共出现 %d 次' % count)

desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)

一个大问题里的三个小问题,请大神尽量都指点下哈……之前帮忙解答其他问题的热心大神都是一人回答一个小问题,到选最佳答案的时候我就很纠结,为什么只能设一个最佳答案qaq……

qiuyouzhi 发表于 2020-3-10 15:42:41

本帖最后由 qiuyouzhi 于 2020-3-10 15:44 编辑

1,return是一个语句,不是函数,把括号去掉后用print
2,锻炼动手能力了{:10_256:}
就跟算法题一样,人家让你用位运算实现加法,你却直接用+算出结果,道理是一样的

zltzlt 发表于 2020-3-10 16:40:34

我觉得你是还没理解 return 的含义。return 是一条语句,不用加括号,用于返回指定的值(在函数中)而且不会打印那个值。

而 print() 只是单纯地打印一个值,并不会起到返回值的作用。

如果你把 return 改成 print,则会直接打印字符串。由于你并没有返回任何值,所以会隐式地返回 None 。这时你 print() 出来的就是返回的 None 值。

如果在函数中一定要用 print() ,那把这句话:

print(findstr('lo','i love you'))

改成这样就行了(去掉 print):

findstr('lo','i love you')

miusa 发表于 2020-3-11 13:11:30

zltzlt 发表于 2020-3-10 16:40
我觉得你是还没理解 return 的含义。return 是一条语句,不用加括号,用于返回指定的值(在函数中)而且不 ...

明白了,感谢。
还想问下,为什么最后的函数给了参数,跑起来需要重新给参数,而不是直接给答案呢
findstr('lo','i love you')

zltzlt 发表于 2020-3-11 13:12:42

miusa 发表于 2020-3-11 13:11
明白了,感谢。
还想问下,为什么最后的函数给了参数,跑起来需要重新给参数,而不是直接给答案呢

其实 x、y 参数根本不需要,可以去掉

miusa 发表于 2020-3-11 13:33:13

zltzlt 发表于 2020-3-11 13:12
其实 x、y 参数根本不需要,可以去掉

去掉他就报错了{:10_266:} name x is not defined

zltzlt 发表于 2020-3-11 13:34:00

miusa 发表于 2020-3-11 13:33
去掉他就报错了 name x is not defined

def findstr():
    y = input('请输入目标字符串:')
    x = input('请输入子字符串(两个字符):')
    n = y.count(x)
    return('子字符串在目标字符串中共出现',n,'次')

print(findstr())

miusa 发表于 2020-3-11 22:04:02

zltzlt 发表于 2020-3-11 13:34


懂了,谢谢大神~
页: [1]
查看完整版本: 第18讲课后题,动动手代码问题求指点