0

クラスの短いプログラムを書いていますが、最後の部分で行き詰まっています。プログラムを実行すると、別の関数を定義するために 2 つの別個の関数のコストを乗算しようとするコードの最後に到達するまで、すべてが適切に機能します。どうすればこれを修正できますか?

完全なコードは次のとおりです。

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)))

しかし、関数を見ると、それらはすべて同じことを行っています: 2 つの引数を乗算しています。複数の関数がすべて同じ仕事をする必要はありません。実際、関数はまったく必要ありません。関数を捨てて、変数を使用します。

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 に答える