2014-02-09 43 views
0

嗨im新的python和我的老師希望我們創建一個多功能的功能。 這是我的計劃是什麼樣子Python編程使用多種功能

def main(): 
    carpetyards = float(input("Enter amount of yards the carpet is")) 
    carpetcost = 5.50 * carpetyards 
    fee = carpetcost + 25.00 
    tax = .06 * fee 
    totalcost = fee + tax 
results() 

def results(): 
    print() 
    print('carpetyards :' , format (carpetyards)) 
    print('carpetcost  :' , format (carpetcost, '9,.2f')) 
    print('fee   :' , format (fee,  '9,.2f')) 
    print('tax   :' , format (tax,  '9,.2f')) 
    print('totalcost  :' , format (totalcost, '9,.2f')) 

main() 

我得到任何nameerror或結果是沒有定義的錯誤。有人可以幫忙嗎?

+0

你打電話給它太早了,把函數調用後的函數的定義。 –

+1

詢問你的老師關於變量的範圍。另外,縮進'results()'。 – rlms

+0

哎呀抱歉創建一個具有多種功能的程序 – user3290698

回答

0

您需要定義resultsmain功能,這個工作裏面,

def main(): 
    carpetyards = float(input("Enter amount of yards the carpet is")) 
    carpetcost = 5.50 * carpetyards 
    fee = carpetcost + 25.00 
    tax = .06 * fee 
    totalcost = fee + tax 

    # 'main' function scope 
    def results(): 
    print() 
    print('carpetyards :' , format (carpetyards)) 
    print('carpetcost  :' , format (carpetcost, '9,.2f')) 
    print('fee   :' , format (fee,  '9,.2f')) 
    print('tax   :' , format (tax,  '9,.2f')) 
    print('totalcost  :' , format (totalcost, '9,.2f')) 

    results() 

# outer scope 
main() 

你可以進一步只要你正確地縮進定義它們的內部main等功能。

+2

我不同意。你可以在'main'裏面定義'results',但是你不需要*。 'result'可以在'main'之外定義,只需要在使用之前定義它。 – SethMMorton

1

main()results())結束時的線不是縮進,所以它的程序執行此:

  1. 定義main()
  2. 運行results()
  3. 定義results()
  4. 運行main()

正如你所看到的,會出現一些錯誤,因爲你不僅在定義之前運行results(),而且在results()(在main()中設置)中使用的變量超出了它的範圍(在main()中設置的變量僅在main()內工作除非你讓他們全球化)。