[英]Why an extra none type str is returning?
这是我在 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()
当我只运行 function 时,结果还可以,但是当我尝试将结果写入文件时,出现以下错误:
fptr.write(result + '\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
通过手动检查,我发现当我将结果存储到结果变量中时,它还会获得一个额外的值“无”。 我不知道为什么会这样。 请帮忙。
您的def solve(s):
function 不返回任何内容,因此默认情况下它返回None
将其修复为:
def solve(s):
name = list(s.split())
return name
要将每个单词大写一个句子:
split
它capitalize
每个单词join
他们import os
def solve(sentence):
return " ".join(word.capitalize() for word in sentence.split())
if __name__ == '__main__':
s = input("Give a sentence: ")
result = solve(s)
with open(os.environ['OUTPUT_PATH'], 'w') as fptr:
fptr.write(result + '\n')
当程序员没有定义函数返回任何东西时, Python function 默认返回None
。 这就是您的程序中正在发生的事情。
function solve
不返回任何内容,因此在调用 function 时返回存储在变量result
中的 None
您可以在程序中进行的更改是返回名称。
def solve(s):
name = list(s.split())
return name
此外,在您的程序中,不能在for
块中使用return
语句。 此外, name
未在您的main
中定义。 修复它的提示是将变量名称从name
更改为result
您的 for 循环并在调用 function 后放置 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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.