longzhou520 发表于 2020-12-18 21:09:51

为什么后面会出现 none

def findstr():
    str1 = input('请输入目标字符串:')
    str2 = input('请输入子字符串(两个字符串):')
    if str2 in str1:
      count1 = str1.count(str2)
      print('子字符在目标字符中共出现',count1,'次')
    else:
      print('请重新输入子字符串:')


print(findstr())


结果是:
"C:\Program Files\Python39\python.exe" C:/Users/Administrator/PycharmProjects/pythonProject2/测试.py
请输入目标字符串:fish
请输入子字符串(两个字符串):is
子字符在目标字符中共出现 1 次
None

Process finished with exit code 0

wp231957 发表于 2020-12-18 21:19:50

去掉最外层的print
搞不懂你为啥要去打印函数

昨非 发表于 2020-12-18 21:30:23

findstr函数没有返回值
所以打印结果为none

linke.zhanghu 发表于 2020-12-18 21:33:06

首先你要知道的是任何一个函数都是有返回值的,如果我们不指定返回值那么默认的返回值就是None
你如果单纯的想要执行函数那么只需要
findstr()
这么做就行了。这样函数就会执行了。
但是print()就不一样了。print()是打印数据。如果print()里面你写的是函数名 + () 那么意思就是打印这个函数的返回值。你的函数没有指定返回值所以返回值是None 打印的结果当然也是None
print(findstr())    # 会在执行完函数里面的所有代码以后 在输出一个None
print(findstr)      # 输出结果是函数的内存地址(指针都行)但是不执行函数体代码
findstr()            # 只有这样才是执行函数
页: [1]
查看完整版本: 为什么后面会出现 none