2016-11-07 7 views
-2

私は残りの作業を行う前に最初の計算を実行しようとしています。しかし、たびに0を返し続けます。 私は自分で複数の解決策を試しましたが、うまくいくものは見つかりませんでした。私の計算を実行する私の関数は毎回0を返しています。私は間違って何をしていますか?

私のコードは以下のとおりです:Pythonで

garden_length = 0 
garden_width = 0 
veg_length = 0 
veg_width = 0 
flower_length = 0 
flower_width = 0 
garden_area = 0 
veg_area = 0 

def GetGardenLength(): 
    try: 
     garden_length = float(input('Please enter the gardens length in metres: ')) 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetGardenLength() 
    return garden_length 

def GetGardenWidth(): 
    try: 
     garden_width = float(input('Please enter the gardens width in metres: ')) 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetGardenWidth() 
    return garden_width 

def GetVegPlotLength(): 
    try: 
     veg_length = float(input('Please enter the vegetable plots length in metres: ')) 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetVegPlotLength() 

def GetVegPlotWidth(): 
    try: 
     veg_width = float(input('Please enter the vegetable plots width in metres: ')) 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetVegPlotWidth() 

def GetFlowerLength(): 
    try: 
     flower_length = float(input('Please enter the flower beds length in metres: ')) 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetFlowerLength() 

def GetFlowerWidth(): 
    try: 
     flower_width= float(input('Please enter the flower beds width in metres: ')) 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetFlowerWidth() 

def CalculateGardenArea(): 
    garden_area = (garden_length * garden_width) 
    print('The Area of the Garden is ' + str(garden_area)) 

def CalculateVegArea(): 
    veg_area = (veg_length * veg_width) 
    print('The Area of the Vegetable Plot is ' + str(veg_area)) 

GetGardenLength() 
GetGardenWidth() 
GetVegPlotLength() 
GetVegPlotWidth() 
GetFlowerLength() 
GetFlowerWidth() 
CalculateGardenArea() 
CalculateVegArea() 

答えて

1

を、関数内の変数に代入すると、それがローカルに必ず、スコープます。これを回避するために、あなたはそうのようなglobalキーワードを使用する必要があります:あなたの関数は、すでに値を返すので、

def GetGardenLength(): 
    global garden_length 
    try: 
     garden_length = float(input('Please enter the gardens length in metres: ')) 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetGardenLength() 
    return garden_length 

それとも、単に(上記の変更を行わずに)戻り値を使用します。

garden_length = GetGardenLength() 
0

関数GetFlowerLength,GetVegPlotWidth,GetVegPlotLengthおよびGetFlowerWidthは、tryステートメント内の値を返しません。ここでの問題は、スコープの一つである

def GetVegPlotLength(): 
    try: 
     veg_length = float(input('Please enter the vegetable plots length in metres: ')) 
     return veg_length # <-- code missing 
    except ValueError: 
     print('Please enter a valid NUMBER.') 
     return GetVegPlotLength() 
+1

、インラインコメントPythonは '#'ではなく '/'を使っています:) –

+1

@leaf my bad。 JSからPythonへの切り替えの問題:) – leo7r

0

あなたのコードは、この(他の機能のために繰り返す)のようになります。 CalculateGardenAreaは、GetGardenLengthGetGardenWidthで定義されたgarden_length変数とgarden_width変数にアクセスできません。

def addTwoPrint(): 
    a = 1 
    b = 2 
    print (a + b) 

def addTwo(): 
    a = 1 
    b = 2 
    return (a + b) 
addTwoPrint() 

a = addTwo() 
b = addTwo() 

print (a + b) 

そして、あなたは、おそらく最も簡単にそうようにコードを編集することによって、これを反映するようにコードを更新することができます:それを理解するために、このコードで遊んでちょうどあなたが知っているように

def CalculateGardenArea(garden_length, garden_width): 
    garden_area = (garden_length * garden_width) 
    print('The Area of the Garden is ' + str(garden_area)) 

gard_len = GetGardenLength() 
gard_wid = GetGardenWidth() 
CalculateGardenArea(gard_len, gard_wid) 
関連する問題