2016-03-03 173 views
-3

當試圖使用另一個函數類型錯誤:用於*不支持的操作數類型:「浮動」和「NoneType」

錯誤

TypeError: unsupported operand type(s) for *: 'float' and 'NoneType'

# Function to calculate 2D circularity ratio  
def defineCircularRatio(perim2D, area2D): 

    circularity_ratio = (4*math.pi*area2D)/(perim2D**2) 

    return circularity_ratio 

    print "The 2D circul_ratio is:", circularity_ratio 

周長和麪積內功能 - 由其他功能計算。

+0

您已列出您的代碼和錯誤。現在告訴我們你需要什麼幫助。它說你的錯誤是因爲你正在用float和None對象進行乘法運算,這當然不起作用。哪條線路錯誤?你能否重新格式化並完成最後一行。 – olofom

+0

'area2D'必須是'None' –

回答

0

它看起來像area2D不是一個整數既不是浮動。嘗試檢查您是否先前覆蓋了它的值,或者計算area2D的函數是否真正計算出值。

0

只需使用基礎示例代碼與功能:

import math 

def defineCircularRatio(perim2D, area2D): 
    circularity_ratio = (4*math.pi*area2D)/(perim2D**2) 
    return circularity_ratio 

def main(): 
    area2D = input ("Enter the area: ") 
    perim2D = input ("Enter the perimeter: ") 
    result = defineCircularRatio(perim2D, area2D) 
    print "The 2D circul_ratio is:", result 

main() 

使用此示例代碼,你的錯誤是所有關於你逝去的東西作爲area2D和perim2D。您是否嘗試過使用帶有斷點的IDE,以便您可以看到正在傳遞的內容?我自己使用eric。 你的功能結構似乎很好。我會專注於如何將perim2D和area2D傳遞給你的函數。

0

這是給出了錯誤行:

circularity_ratio = (4*math.pi*area2D)/(perim2D**2) 

現在,因爲它有float錯誤NoneTypemath.pi之前的浮動本身,這意味着perim2D從來沒有定義或等於什麼都沒有,因此NoneType。聲明perim2D爲某些東西,如整數或浮點數以防止出現錯誤。例如:

variable = 2 
other_variable = 3 

def defineCircularRatio(perim2D, area2D): 

    circularity_ratio = (4*math.pi*area2D)/(perim2D**2) 

    return circularity_ratio 

    print "The 2D circul_ratio is:", circularity_ratio 

defineCircularRatio(variable, other_variable) 

上面的代碼分配variableperim2D,解決了問題,因爲perim2D不再等於None而是2. other_variable用於被分配給area2D

相關問題