Python 为什么会返回额外的none类型str?

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__ == '

以下是我在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__ == '__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

将每个单词大写为一个句子:

  • split
    it
  • 将其循环到
    大写
    每个单词
  • 按空格连接它们
导入操作系统
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总是打开的,随时可以测试代码