2014-02-09 6 views
0

안녕하세요, 저는 Python에 처음 생겼고 선생님은 여러 함수가있는 함수를 만들길 원했습니다. 는 여기에 내가 나가서 설명하자면 NameError 또는 결과 중 하나가 오류를 정의되지 않은 얻을 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() 

처럼 내 프로그램 모습입니다. 누군가 제발 도와 줄 수 있니?

+0

너무 일찍 호출하면 함수 정의 뒤에 함수 호출을 넣으십시오. –

+1

교사에게 변수 범위에 관해 문의하십시오. 또한 들여 쓰기'results()'. – rlms

+0

죄송합니다. 여러 함수를 사용하여 프로그램을 만들었습니다. – user3290698

답변

0

당신은 당신이 추가로 당신이 제대로 들여 쓰기로 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 함수 내에서 results를 정의 할 필요가있다.

+2

나는 동의하지 않는다. 당신은 * main * 내부에서 결과를 정의 할 수 있지만 * 필요는 없습니다. 'results'는'main' 밖에서 정의 될 수 있습니다. 단지 사용되기 전에 정의되어야합니다. – SethMMorton

1

main() (results())의 끝에있는 줄은 프로그램이 수행 그것 때문에, 들여 쓰기되지 않습니다 :

  1. main()
  2. 실행 results()
  3. 가 정의 정의 results()
  4. 실행 main()

위에서 볼 수 있듯이 results()이 정의되기 전에 실행 중이며 results()에 설정된 변수 (main()에 설정되어 있음)가 범위를 벗어 났기 때문에 여러 오류가 발생합니다 (main()에 설정된 변수는 main()에서만 작동합니다) 글로벌하게하지 않는 한).

관련 문제