2015-11-11 124 views
-1

我的問題是我試圖從其他函數區域調用函數代價以完成主函數調用的所有返回值。這是作業,我卡住了。如果我不必從區域函數中調用成本函數並僅執行我的計算,則問題對我來說很容易。從另一個函數調用函數進行計算(Python)

import math 


def cost(price, area): 

    return price/area 

def area(size): 

    radius = size/2 
    area = (radius**2) * math.pi 
    finalprice = cost(price, area)/area 
    return finalprice 


def main(): 

    size = int(input("How big is your pizza?: ")) 
    price = float(input("How much does the whole pizza cost?: ")) 

    answer = area(size) 
    print("${0:0.3f}".format(answer)) 

main() 
+0

家庭作業的問題通常不回答就到這裏,除非你能證明你已經嘗試自己解決問題,有一個特定的問題(不是「我卡」) – enigma

+0

「價格」不在區域功能中定義。當你打電話費用時,你嘗試並使用它。 – tpdietz

+0

我不是要求解答。我只想爲某件事或某些提示獲取方向,因爲我嘗試了所有關於此問題的知識。我不知道爲什麼當我從區域函數調用成本函數時,它說形式參數沒有被定義。你可能知道我是新手程序員。 –

回答

0

您正試圖使用​​未在area()函數範圍內定義的變量。

在area()函數中,我們有未定義的大小和價格。你從你的main()傳遞size變量,但是它被重命名爲diameter,並且這個diameter變量沒有被使用。

您還應該傳遞價格變量,因爲您需要它進行計算。

def area(diameter, price): 
    radius = diameter/2 
    area = (radius**2) * math.pi 
    finalprice = cost(price, area)/area 
    return finalprice 

此外,計算finalprice時(和你的成本函數)小心整數除法...這會導致你的計算錯誤。

+0

謝謝!我將價格包含在我的區域功能中,並且工作正常!我也做%劃分而不是/。此外,直徑變量是一個錯字,我糾正它。它現在工作! –

1

你爲什麼要把這個區域分成兩次?我猜你試圖計算每個單位廣場面積比薩的成本?

import math 
def area(diameter , price): 
    radius = diameter/2 
    area = (radius**2) * math.pi 
    finalprice = price/ area 
    return finalprice 
def main(): 
    size = int(input("How big is your pizza?: ")) 
    price = float(input("How much does the whole pizza cost?: ")) 
    answer = area(size, price) 
    print("${0:0.3f}".format(answer)) 

main() 
相關問題