第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:44 编辑
1,return是一个语句,不是函数,把括号去掉后用print
2,锻炼动手能力了{:10_256:}
就跟算法题一样,人家让你用位运算实现加法,你却直接用+算出结果,道理是一样的 我觉得你是还没理解 return 的含义。return 是一条语句,不用加括号,用于返回指定的值(在函数中)而且不会打印那个值。
而 print() 只是单纯地打印一个值,并不会起到返回值的作用。
如果你把 return 改成 print,则会直接打印字符串。由于你并没有返回任何值,所以会隐式地返回 None 。这时你 print() 出来的就是返回的 None 值。
如果在函数中一定要用 print() ,那把这句话:
print(findstr('lo','i love you'))
改成这样就行了(去掉 print):
findstr('lo','i love you') zltzlt 发表于 2020-3-10 16:40
我觉得你是还没理解 return 的含义。return 是一条语句,不用加括号,用于返回指定的值(在函数中)而且不 ...
明白了,感谢。
还想问下,为什么最后的函数给了参数,跑起来需要重新给参数,而不是直接给答案呢
findstr('lo','i love you') miusa 发表于 2020-3-11 13:11
明白了,感谢。
还想问下,为什么最后的函数给了参数,跑起来需要重新给参数,而不是直接给答案呢
其实 x、y 参数根本不需要,可以去掉 zltzlt 发表于 2020-3-11 13:12
其实 x、y 参数根本不需要,可以去掉
去掉他就报错了{:10_266:} name x is not defined 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()) zltzlt 发表于 2020-3-11 13:34
懂了,谢谢大神~
页:
[1]