Python 为什么会返回额外的none类型str?
以下是我在Python中返回大写字符串的代码:Python 为什么会返回额外的none类型str?,python,python-3.x,list,Python,Python 3.x,List,以下是我在Python中返回大写字符串的代码: import math import os import random import re import sys def solve(s): name = list(s.split()) for i in range(len(name)): nparts = name[i].capitalize() return print (nparts, end = " ") if __name__ == '
import math
import os
import random
import re
import sys
def solve(s):
name = list(s.split())
for i in range(len(name)):
nparts = name[i].capitalize()
return print (nparts, end = " ")
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
s = input()
result = solve(s)
fptr.write(result + '\n')
fptr.close()
当我只运行函数时,结果是正常的,但当我尝试将结果写入文件时,会出现以下错误:
fptr.write(result + '\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
通过手动检查,我发现当我将结果存储到结果变量中时,它也会得到一个额外的值“None”。我不知道为什么会这样。请帮助。您的def solve(s):
函数不返回任何内容,因此默认情况下它返回None
将其固定到:
def solve(s):
name = list(s.split())
return name
将每个单词大写为一个句子:
itsplit
- 将其循环到
每个单词大写
按空格连接它们
导入操作系统
def solve(句子):
返回“.join”(语句中的单词的单词.capitalize())
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
s=输入(“给出一个句子:”)
结果=求解(s)
将open(os.environ['OUTPUT_PATH'],'w')作为fptr:
fptr.write(结果+'\n')
当程序员没有定义返回任何内容的函数时,Python函数默认返回None
。这就是您的程序中正在发生的事情
函数solve
不返回任何内容,因此在调用函数时不会返回存储在变量result
中的任何内容
您可以在程序中进行的更改是返回名称
def solve(s):
name = list(s.split())
return name
此外,在您的程序中,return
语句不能在for
块中使用。
此外,name
未在main
程序中定义。解决此问题的技巧是在for循环中将变量名从name
更改为result
,并在调用函数后放置for块:
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
s = input()
name = solve(s)
for i in range(len(name)):
nparts = name[i].capitalize()
print (nparts, end = " ")
fptr.write(name[0] + '\n')
fptr.close()
solve(s)
返回None
。此外,循环中包含返回的循环将只运行一次,关于返回打印(…)
:选择一个。请在文件中共享示例输入和预期输出。您的代码中大约有3或4个错误,co你真的应该给出输入和输出的例子,或者只是解释你试图做的事情。错误:只能将列表(而不是“str”)连接到列表返回不起作用。这是你的代码员,我刚刚向你展示了你的函数不返回任何东西,你没有返回结果。似乎你花了一些时间准备这个答案,提供一些细节,但是。。。这不起作用,你继续覆盖nparts
,大写也没用。我的建议是:总是尝试你发布的代码作为答案,我在这里已经4年了,32k的声誉,我仍然在尝试我发布的所有代码作为答案;)我的pycharm总是打开的,随时可以测试代码