[英]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.