簡體   English   中英

為什么一個額外的無類型 str 正在返回?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM