2014-02-09 4 views
0

Привет, новый для 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

Спросите своего учителя о переменном объеме. Кроме того, indent 'results()'. – rlms

+0

К сожалению, создайте программу с несколькими функциями. – user3290698

ответ

0

Вам нужно определить results внутри main функции для этого, чтобы работать,

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', но вы не * need * to. 'results' можно определить вне' main', его нужно просто определить до его использования. – SethMMorton

1

Линия в конце main() (results()) не отступом, так это программа делает это:

  1. Определение main()
  2. Run results()
  3. Определение results()
  4. Run main()

Как вы можете видеть, будет несколько ошибок, потому что вы не только выполняете results() до его определения, но переменные, используемые в results() (которые установлены в main()), выходят за рамки (переменные, установленные в main(), работают только внутри main() если вы не сделаете их глобальными).

Смежные вопросы