2016-06-22 4 views
0

Pythonで解決しようとする問題は、購入したいアイテムの数などの変数を入力することです。私はこれをdef customerとして出力し、「ウィジェットの数はどれくらいですか?」と入力し、その入力に10ポンドの価格を乗じて出力します。このビットは正常に動作します。Python他のサブルーチンのサブルーチンからのインプットの使い方

税金や合計など、さらに数学を行うために、それらの入力を別のサブルーチンに引き渡したいと思います。私はこれをすることができるように私が勉強するためのいくつかのキーワードがありますか?

はここで、これまでに私のコードです:

def wall_1(): 
    height = int(input("Enter the height in metres of wall 1 : ")) 
    width = int(input("Enter the width in metres of wall 1 : ")) 
    wall_1_price = height * width 
    price_all_walls(wall_1_price) 
def wall_2(): 
    height = int(input("Enter the height in metres of wall 2 : ")) 
    width = int(input("Enter the width in metres of wall 2 : ")) 
    wall_2_price = height * width 
    price_all_walls(wall_2_price) 
def wall_3(): 
    height = int(input("Enter the height in metres of wall 3 : ")) 
    width = int(input("Enter the width in metres of wall 3 : ")) 
    wall_3_price = height * width 
    price_all_walls(wall_3_price) 
def wall_4(): 
    height = int(input("Enter the height in metres of wall 4 : ")) 
    width = int(input("Enter the width in metres of wall 4 : ")) 
    wall_4_price = height * width 
    price_all_walls(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() 
    wall_2() 
    wall_3() 
    wall_4() 
    price_all_walls() 
+0

壊れたコードは記述しないでください。それを正しく記述するために何が間違っているかを十分に知っていれば、助けを求めることはありません。私たちがあなたに与えるキーワードは、間違った前提に基づいています。一方、適切な質問をすると、期待したよりも良い回答を得ることができます。 –

+0

分かりやすくするために、既存の作業/壊れたコードを投稿してください。 – aditya

答えて

0

このコードサンプルは、あなたの問題を解決します。 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

私はこれがあなたの質問に答えることを願っています。

+0

あなたは素晴らしいです、私を助けるために時間を割いてくれてありがとう、ありがとう。お大事に! –

+0

お寄せいただきありがとうございます。ありがとう。 – aditya

+0

これを答えとしてマークすることができます。他の人がこれを利用することができます。 – aditya

0

私が正しくあなたの質問を理解している場合、私はわからないが、これは役立つかもしれません。

def customer(): 
    number_items = int(input("Enter the number of items to buy : ")) 
    print("Widgets that you would like : £" + str(number_items * 10)) 
    total_price = number_items * 10 
    further_maths(number_items, total_price) # Call to another subroutine further_maths with parameters number_items and total_price 

def further_maths(number_items, total_price): # Subroutine definition 
    print("The total number of items in another subroutine : " + str(number_items)) 
    print("The total price in another subroutine : " + str(total_price)) 

if __name__ == "__main__": 
    customer() 

このコードでは、サブルーチンcustomer()内のパラメータは、別のサブルーチンfurther_maths()に渡されます。

+1

これはとても役に立ちました。どうもありがとうございました!私は少なくともそれの一部が働いている! –

+0

私は少し働いて、次に他のビットを混乱させる: –

+0

私は助けることができるとうれしいです。 – aditya

関連する問題