簡體   English   中英

類型錯誤:+ 不支持的操作數類型:“int”和“NoneType”

[英]TypeError: unsupported operand type(s) for +: 'int' and 'NoneType

我是 Python 的新用戶,我遇到了 None 類型的問題,我看了不同的問題,但問題仍然存在。

我的代碼是計算階乘

def fact(k): 
    if k > 0: 
        result = k + fact(k-1) 
        print(result) 
    else: 
        result=0 
    return result

fact(3)

我嘗試了您的代碼,但無法產生該錯誤。 我認為你有一些縮進問題,你的循環不符合你期望的邏輯。 請記住循環中的內容和循環外的內容取決於空格,因此請注意制表符和空格。

你的邏輯也有一些錯誤

  1. 你需要 k * fact(k-1) 而不是 +
  2. else 應該是 result = 1

編輯后的代碼是這樣的:

def fact(k): 
    if k > 0: 
        result = k * fact(k-1) 
        print(result) 
    else: 
        result=1 
    return result

還有一種更 Pythonic 的方式來編寫 function 是讓它返回實際結果,而不是將結果傳遞給變量並返回變量。 我的假設是您在 function 中打印結果以排除故障,因為這在您的最終版本中肯定會被刪除。 無論如何,請嘗試以下代碼:

def fact_v2(k): 
    if k > 0: 
        return k * fact_v2(k-1) 
    else: 
        return 1 

你會這樣稱呼你 function :

print(fact_v2(11))

祝你好運,Python 是一種有趣的語言,乍一看可能令人生畏,但你會成功的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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