2014-09-12 158 views
-1

我是python的新手。我不斷收到下面列出的錯誤。有人可以解釋我遇到的問題嗎?感謝計算球體的體積和表面積的輸出簡單錯誤

體積= 4.0/3.0 * math.pi *(半徑*半徑*半徑)

類型錯誤:不能由類型 'STR'

import math 

radius = input("Enter Radius: ") 
print("Radius: " + str(radius)) 

volume = 4.0/3.0 * math.pi * (radius*radius*radius) 
print("Volume: " + str(round(volume,2))) 

surface = 4.0 * math.pi * (radius*radius) 
print("Surface Area: " + str(round(surface,2))) 

回答

0

input的非INT序列乘以返回一個字符串。你不能將兩個字符串相乘。

如果你想將它轉換爲整數或浮點數(或任何其他類型),像這樣做:

radius = float(radius) 

您可能已經通過觀察在Python 2.x的示例代碼混淆,在那裏爲你輸入的字符串是eval(),所以你得到一個float或者int或者list或者調用os.system('rm -rf /')或者任何用戶輸入的內容。這是令人困惑和危險的,所以他們把它固定在3.0,所以現在你只得到了字符串,這取決於你決定如何處理它。

+0

是的,我下載了最新的3.4.1蟒蛇,我一直在尋找的例子是2.x.x所以這是不是非常有幫助。但是,我所做的是轉換---半徑=浮點數(半徑),我得到它工作正常。感謝您的快速回復! – user2981423 2014-09-12 23:21:15

+0

@ user2981423:如果您打算查看大量的2.x代碼(並且很難避免),您可能需要瀏覽一下,或者可能需要書籤[Python 3.0的新增功能](https: //docs.python.org/3/whatsnew/3.0.html)。除了你會很快學到的大問題('打印'作爲一個函數,無處不在的Unicode),還有一堆小的。 (然而,這些變化中的一些已經被撤銷 - 例如,'callable'再次存在,字符串文字中的'u'前綴被忽略而不是錯誤等) – abarnert 2014-09-12 23:39:56

0

您需要將字符串半徑轉換爲float或double。 試試這個:

import math 

radius = input("Enter Radius: ") 
print("Radius: " + str(radius)) 

r = float(radius) 

volume = 4.0/3.0 * math.pi * (r*r*r) 
print("Volume: " + str(round(volume,2))) 

surface = 4.0 * math.pi * (r*r) 
print("Surface Area: " + str(round(surface,2)))