0

我正在为我的班级编写一个简短的程序,但我被困在最后一部分。当我运行程序时,一切都正常运行,直到我尝试将两个独立函数的成本相乘以定义另一个函数。我该如何纠正这个问题?

这是完整的代码:

def main():
    wall_space = float(input('Enter amount of wall space in square feet: '))
    gallon_price = float(input('Enter the cost of paint per gallon: '))
    rate_factor = wall_space / 115
    total_gallons(rate_factor, 1)
    total_labor_cost(rate_factor, 8)
    total_gal_cost(rate_factor, gallon_price)
    total_hourly_cost(rate_factor, 20)
    total_cost(total_hourly_cost, total_gal_cost)
    print()

def total_gallons(rate1, rate2):
    result = rate1 * rate2
    print('The number of gallons of required is: ', result)
    print()

def total_labor_cost(rate1, rate2):
    result = rate1 * rate2
    print('The hours of labor required are: ', result)
    print()

def total_gal_cost(rate1, rate2):
    result = rate1 * rate2
    print('The cost of the paint in total is: ', result)
    print()

def total_hourly_cost(rate1, rate2):
    result = rate1 * rate2
    print('The total labor charges are: ', result)
    print()

def total_cost(rate1, rate2):
    result = rate1 * rate2
    print('This is the total cost of the paint job: ', result)
    print()

main()

我在这里绝望了伙计们!

4

4 回答 4

5

最初的问题是您将total_hourly_costandtotal_gal_cost函数本身传递给total_cost,后者期望数字作为参数,而不是函数。

真正的问题是你的函数只是打印,当你可能希望他们返回他们计算的值时。

def total_hourly_cost(rate1, rate2):
    result = rate1 * rate2
    print('The total labor charges are: ', result)
    print()

    return result

当您调用该函数时,将该结果存储在一个变量中(就像您对 所做的那样input

per_hour = total_hourly_cost(rate_factor, 20)

然后将该结果传递给您的最终函数:

total_cost(per_hour, per_gallon)
于 2013-09-08T19:08:14.500 回答
2

不要print在所有功能中使用;让他们返回值:

def total_hourly_cost(rate1, rate2):
    result = rate1 * rate2
    return result

然后你可以从 main() 打印结果:

print('The total labor charges are: {}'.format(total_hourly_cost(rate_factor, 20)))

但是,如果您查看您的函数,它们都在做同样的事情:将两个参数相乘。您不需要多个功能都做同样的工作。实际上,您根本不需要任何功能。抛弃函数并使用变量:

total_hourly_cost = rate_factor * 20
print('The total labor charges are: {}'.format(total_hourly_cost))
于 2013-09-08T19:10:01.563 回答
0

你应该看看如何从 python 中的函数返回值,将它们存储在变量中,然后将它们重用于其他计算。

http://docs.python.org/release/1.5.1p1/tut/functions.html

于 2013-09-08T19:22:38.827 回答
0

我们可以通过以下方式将多个参数相乘:

>>> def mul(*args):
    multi = 1
    for i in args:
          multi *=i
    return multi

数(2,8)

16

数(2,8,3)48

于 2017-11-15T06:57:05.740 回答