2013-07-30 42 views
0

我想計算一個圓形物體的每平方的成本,因爲它的直徑和價格。計算一個圓形物體的每平方的成本

這裏是我的了:

import math 

def main(): 
    print("This program calculates the cost per square inch of a circular object.") 

    diameter = eval(input("What is the diameter of the object? ")) 
    price = eval(input("What is the price of the whole object? ")) 

    cost_per_square = (math.pi * (diameter/2)**2)/price 

    print("The cost per square inch is $", round(cost_per_square, 2), sep="") 

main() 

我不擅長數學,所以我想,如果公式是正確的?

+2

我想警告你反對eval(input())調用 - 用戶可以輸入一些有效的python代碼,它將在評估過程中執行。使用float(input()) –

+0

更安全謝謝我沒有意識到這一點,我剛開始Python。 – onimojo

+0

eval和exec都會執行給定的任何字符串,(eval期望結果是一個值)。當你的代碼生成代碼然後爲你運行時,這是非常強大的__但___當_else_可以提供字符串時,它也是___令人難以置信的危險_因此你需要避免將它們從外部世界中調用。 –

回答

3

是的,圓的面積公式是A = π * r * r。

price應該在分子中,分子中應該是area。您已編碼 - 單位成本的平方英尺。想想你想要的單位:每平方英尺的成本。那會引導你。

我建議將diameter除以2而不是2來避免整數除法問題。

+0

如果你使用π,你不應該害怕使用²;-) – Alfe

+0

害怕?不,只是無知。不在我的舌頭上。什麼是標記?請編輯。我對Google很懶。 – duffymo

+0

謝謝你的澄清:) – onimojo

0

查找圓圈面積的公式爲pi*r*r。要獲得每平方英寸的成本,請執行以下操作:price/area

3

我還建議先用專有名稱計算中間值。這通常可以防止錯誤擺在首位:

radius = diameter/2.0 
area = math.pi * radius**2 
price_per_area = price/area 

你也許已經注意到了,我之前的「成本」和「區域」之前的「廣場」首選「價格」。這是因爲可互換地使用同義詞也會引入錯誤的空間。現在所有三條線都非常簡單,以至於很難介紹您首次提出的錯誤。

+2

+1 - 好名字很重要。偉大的一點。只是一個狡辯:將直徑除以2.0以避免整數除法問題。 – duffymo

+1

@duffymo - 同意,好名字非常重要。一個meta-quibble,問題是特別標記爲python-3,其中'5/2 == 2.5',但爲了便攜性和可讀性,您的建議可能是一個好習慣。 – msw

+0

我錯過了python-3標籤。謝謝你指出。 – duffymo