2017-09-15 26 views
1

我必須寫一個函數,其中有一個正方形刻在一個圓圈中。正方形的角落觸摸圓的周邊。如何製作一個圓形的方形?

find_area(4)的函數調用返回值應爲18.2400。 但我認爲我試圖合併一個平方根的事實與代碼混淆,並沒有給我任何價值。 這是我走到這一步:

import math 

def find_area(r): 
    # area: area of circle - area of square 

    s = math.sqrt(2) 
    sidesquare = (s * ((r*2)/2) 
    square = (sidesquare * 2)** 2 
    circle = (3.14 * r)** 2 
    area = circle - square 
    return (area) 

if __name__ == '__main__': 
    print('Testing compute() with r = 4:' + str(find_area(4))) 
+0

只是單挑 - 你可以使用'math.pi'來獲得比3.14更高的精度。 –

回答

0

有在你的代碼一些問題,主要使用的是一些不需要的括號。希望下面的代碼可以幫助你。

def find_area(r): 
    s = math.sqrt(2) 
    sidesquare = s * r * 2/2 
    square = (sidesquare * 2) ** 2 
    circle = 3.14 * r ** 2 
    area = circle - square 
    return area 
+0

謝謝sosososo了!我刪除了括號,並改變了方格的公式,因爲我意識到我已經找到了方。 :) – missusfox

+0

不需要的括號不會導致錯誤 - 錯誤的括號。突出你的代碼和上面的代碼之間的功能差異將使這個更好的答案。 – Shadow

0

如果您通過手多一點緊縮的數學,你會發現,廣場的面積是2 * r ** 2和圓是pi * r ** 2,所以你的函數簡化爲

from math import pi 

def find_area(r): 
    return (pi - 2.) * r ** 2 

,或者如果你堅持pi == 3.14,

find_area = lambda r: 1.14 * r ** 2