このコードサンプルは、あなたの問題を解決します。 price_all_wallsメソッドは4つの引数を受け入れます。あなたのwall_1()、wall_2()、wall_3()、wall_4()メソッドでは、1つの引数(壁の価格)でprice_all_walls()を呼び出しています。これは、 "関数定義が存在しません"というエラーを投げます。
関数を定義すると、関数プロトタイプが関連付けられます(この用語はCおよびC++プログラミング言語で最も一般的に使用されます)。メソッドの名前と型シグネチャ(パラメータ型 - > Python、戻り値の型など)。あなたは()メソッドのprice_all_wallsを呼び出すと、それは、次の4つの引数で呼び出されなければなりませんので、以下のようにコードを変更することができます。
def wall_1():
height = int(input("Enter the height in meters of wall 1 :"))
width = int(input("Enter the width in meters of wall 1:"))
wall_1_price = height * width
wall_2(wall_1_price)
def wall_2(wall_1_price):
height = int(input("Enter the height in meters of wall 2:"))
width = int(input("Enter the width in meters of wall 2:"))
wall_2_price = height * width
wall_3(wall_1_price, wall_2_price)
def wall_3(wall_1_price, wall_2_price)
height = int(input("Enter the height in meters of wall 3:"))
width = int(input("Enter the width in meters of wall 3:"))
wall_3_price = height * width
wall_4(wall_1_price, wall_2_price, wall_3_price)
def wall_4(wall_1_price, wall_2_price, wall_3_price):
height = int(input("Enter the height in meters of wall 4:"))
width = int(input("Enter the width in meters of wall 4:"))
wall_4_price = height * width
price_all_walls(wall_1_price, wall_2_price, wall_3_price, wall_4_price)
def price_all_walls(wall_1_price, wall_2_price, wall_3_price, wall_4_price):
print("The total price so far is : " + str(wall_1_price + wall_2_price + wall_3_price + wall_4_price))
if __name__=="__main__":
wall_1()
これは、これを行うのは非常に非効率的な方法ですが(何の良いプログラマは、これまで提案していないだろうこの)。この例は、手元にある問題の説明に役立ちます。
あなたは私はあなたがグローバル変数を使用することをお勧めまたはそれを以下のコードに示す方法にしてください、この問題をコーディングしたい場合:
def wall_1():
height = int(input("Enter the height of wall 1 :"))
width = int(input("Enter the width of wall 1 :"))
wall_1_price = height * width
return wall_1_price
def wall_2():
height = int(input("Enter the height of wall 2:"))
width = int(input("Enter the width of wall 2:"))
wall_2_price = height * width
return wall_1_price
def wall_3():
height = int(input("Enter the height of wall 3:"))
width = int(input("Enter the width of wall 3:"))
wall_3_price = height * width
return wall_3_price
def wall_4():
height = int(input("Enter the height of wall 4:"))
width = int(input("Enter the width of wall 4:"))
wall_4_price = height * width
return wall_4_price
def price_all_walls(wall_1_price, wall_2_price, wall_3_price, wall_4_price):
return wall_1_price + wall_2_price + wall_3_price + wall_4_price
if __name__=="__main__":
wall_1_price = wall_1()
wall_2_price = wall_2()
wall_3_price = wall_3()
wall_4_price = wall_4()
print("The total price of the walls is : " + str(price_all_walls(wall_1_price, wall_2_price, wall_3_price, wall_4_price)))
誰もが最善の方法ことを示唆しているが、これを行うには次のようになります。引数として高さと幅をとり、壁の価格を返す関数wall_n(int、int)を宣言します。これにより、モジュール化されたコードが得られ、再利用性も提供されます。
def wall_n(height, width):
wall_n_price = height * width
return wall_n_price
def price_all_walls(prices):
total_price = 0
for price in prices:
total_price += price
return total_price
if __name__=="__main__":
number_walls = int(input("Enter the number of walls to build : "))
wall_prices = []
for i in range(number_walls):
height = int(input("Enter the height of wall " + str(i) + " : "))
width = int(input("Enter the width of wall " + str(i) + " : "))
wall_prices.append(wall_n(height, width))
print("The total price is : " + str(price_all_walls(wall_prices)))
グローバル変数は使用していません。あなたはそれについて読むことができますhere
私はこれがあなたの質問に答えることを願っています。
壊れたコードは記述しないでください。それを正しく記述するために何が間違っているかを十分に知っていれば、助けを求めることはありません。私たちがあなたに与えるキーワードは、間違った前提に基づいています。一方、適切な質問をすると、期待したよりも良い回答を得ることができます。 –
分かりやすくするために、既存の作業/壊れたコードを投稿してください。 – aditya