我正在为我的班级写一个简短的程序而且我被困在最后一部分。当我运行程序时,一切都正常运行,直到我到达代码的末尾,我试图将两个单独函数的成本相乘以定义另一个函数。我怎么能纠正这个?
以下是完整的代码:
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()
我在这里绝望!
答案 0 :(得分:5)
最初的问题是,您将total_hourly_cost
和total_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)
然后将结果传递给最终函数:
{{1}}
答案 1 :(得分: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))
答案 2 :(得分:0)
您应该看看如何从python中的函数返回值,将它们存储在变量中,然后将它们重用于其他计算。
答案 3 :(得分:0)
我们可以通过以下方式将多个参数相乘:
>>> def mul(*args):
multi = 1
for i in args:
multi *=i
return multi
MUL(2,8)
16
MUL(2,8,3) 48