2013-10-02 4 views
0

Python 인터프리터는 paintRequiredCeiling이 정의되지 않는다고 말합니다. 코드에서 오류를 찾을 수 없었습니다. 목표는 프로그램이 사용자로부터 입력을받은 다음 페인트 작업에 필요한 비용/시간을 계산하는 것입니다..ceil() 수학 함수가 작동하지 않습니까?

import math 

def main(): 
    # Prompts user for sq and paint price 
    totalArea = float(input("Total sq of space to be painted? ")) 
    paintPrice = float(input("Please enter the price per gallon of paint. ")) 

    perHour = 20 
    hoursPer115 = 8 

    calculate(totalArea, paintPrice, perHour, hoursPer115) 
    printFunction() 

def calculate(totalArea, paintPrice, perHour, hoursPer115): 
    paintRequired = totalArea/115 
    paintRequiredCeiling = math.ceil(paintRequired) 
    hoursRequired = paintRequired * 8 
    costOfPaint = paintPrice * paintRequiredCeiling 
    laborCharges = hoursRequired * perHour 
    totalCost = laborCharges + costOfPaint 

def printFunction(): 
    print("The numbers of gallons of paint required:", paintRequiredCeiling) 
    print("The hours of labor required:", format(hoursRequired, '.1f')) 
    print("The cost of the paint: $", format(costOfPaint, '.2f'), sep='') 
    print("Total labor charges: $", format(laborCharges, '.2f'), sep='') 
    print("Total cost of job: $", format(totalCost, '.2f'), sep='') 

main() 
+4

변수는'calculate' 함수에 국한되어 있으므로 할당 한 값은'printFunction'에 표시되지 않습니다. – Barmar

+0

'calculate' 함수의 지역 변수입니다. 그것을 돌려주고, 파라미터로서'printFunction'에 전파 할 필요가 있습니다. – BartoszKP

+0

오류 메시지가 표시되면 오류의 원인과 오류의 원인을 정확히 알려줘야합니다. 오류를 찾기 위해 코드를 실행하거나 연구하지 않아도됩니다. – Gabe

답변

1

변수 paintRequiredCeiling는 계산 기능에서만 사용할 수 있습니다. 그것은 당신 안에 존재하지 않습니다 printFunction. 다른 변수와 비슷합니다. 이 기능을 사용하려면 기능 외부로 이동하거나 전달해야합니다.

1

calculate() 기능에는 return 문이 없다 : 당신이 당신의 함수가 종료 될 때 그 변수는 모든 함수에 지역이기 때문에, 그들을 버리고 다음,이 모든 값을 계산하고 있습니다.

마찬가지로, printFunction() 함수는 인쇄 할 값을 허용하지 않습니다. 따라서 변수가 전역 변수가 될 것으로 예상하고 그렇지 않기 때문에 오류가 발생합니다.

이제 일 수 있습니다. 일반적으로 잘못된 해결책입니다. 대신 return 문을 사용하여 calculate() 함수의 결과를 반환하고이를 변수에 변수 main()에 저장 한 다음 printFunction()으로 전달하는 방법에 대해 알아보십시오.

관련 문제