2013-12-12 37 views
1

當我運行我的腳本時,我得到TypeError。 這是我的所有代碼:爲什麼我得到TypeError:不支持的操作數類型爲+

lawnCost = ("£15.50") 
lengthLawn = float(input("Lengh of lawn: ")) 
widthLawn = float(input("Width of lawn: ")) 

totalArea = (lengthLawn) * (widthLawn) 

print (("The total area of the lawn is ")+str(totalArea)+str("m²")) 

totalCost = (totalArea) * float(15.50) 

print ("The cost of lawn per m² is £15.50") 
print ("The total cost for the lawn is ")+str(totalCost) 

這是我的錯誤:

TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' 

如果有人可以幫助我指出這將是偉大正確的方向,謝謝。

此外,如果它可以幫助我在Windows 7 x64上運行Python 3.3。

回答

6

在最後一行,str(totalCost)必須括號爲print

print ("The total cost for the lawn is "+str(totalCost)) 

這是因爲print回報None在Python 3.x的所以,你的代碼實際上是試圖做到這一點:

None+str(totalCost) 

另外,如果你想要的話,下面是一個版本的腳本這是一個小更清潔,更高效:

lawnCost = "£15.50" 
lengthLawn = float(input("Lengh of lawn: ")) 
widthLawn = float(input("Width of lawn: ")) 

totalArea = lengthLawn * widthLawn 

print("The total area of the lawn is {}m²".format(totalArea)) 

totalCost = totalArea * 15.50 

print("The cost of lawn per m² is £15.50") 
print("The total cost for the lawn is {}".format(totalCost)) 

基本上,我做了三件事情:

  1. 刪除不必要的括號和多餘的空格print後。

  2. 刪除了不必要的電話strfloat

  3. 合併使用str.format

+0

非常感謝!非常有用和正確。非常感謝更清晰的代碼,通過比較兩者將能夠學習。謝謝。 – moakeseey

相關問題