2017-04-12 8 views
0

私はこれを正しく実行することはできません、私は3つの関数を使用する必要があります。 ap()機能でlwを渡すとmain()機能でそれらにアクセス:私は正しく私のプログラムで関数を呼び出す/返すとは思わない

def lw(): 
    l = input("Enter the length of your rectangle: ") 
    w = input("Now enter the width of your rectangle:") 
    return l, w 

def ap(): 
    l,w = lw() 
    area = l * w 
    perimeter = 2*1 + 2*w 
    return area, perimeter 

def main(): 
    area,perimeter = ap() 
    print("With a length of", l ."and a width of", w) 
    print("the area of your rectangle is", area) 
    print("the perimeter of your rectangle is", perimeter) 

if __name__ == "__main__": 
    main() 
+1

'l'と' w'は文字列であり、intやfloatなどではありません。 'int()'や 'float'呼び出しで' input(..) '呼び出しをラップする必要があります。 –

+1

また、 'l'および' w'は 'lw'関数と' ap'関数のローカル変数です。コードが現在書かれているので、 'main'はそれらにアクセスできません。最後に、境界計算にはタイプミスがあると思います。 – cco

答えて

0

これは、私は2つの変更を加えました

def lw(): 
    l = input("Enter the length of your rectangle: ") 
    w = input("Now enter the width of your rectangle:") 
    return l, w 

def ap(): 
    l,w = lw() 
    area = l * w 
    perimeter = 2*1 + 2*w 
    return l, w, area, perimeter 

def main(): 
    l,w,area,perimeter = ap() 
    print("With a length of", l ,"and a width of", w) 
    print("the area of your rectangle is", area) 
    print("the perimeter of your rectangle is", perimeter) 

if __name__ == "__main__": 
    main() 

動作するはずです。

0

Heyo、

私はあなたのコードの問題の数を確認できます。

  1. をごmain関数の最初のprintのステートメントは、その関数のスコープ内に存在しない変数を呼び出しているようです。 areaperimeterに加えて、lwの値をap()から戻す必要があります。また、このステートメントのパラメータにはわずかなタイプミスがあります(.,にする必要があります)。
  2. 周囲の計算が少しオフです。 2の代わりにをに、lを乗じてlを無駄にします。
  3. コードで要求されている入力は、数字の数値ではなくstringの値を返します。 int()またはfloat()にそれらを渡し、何かを計算できるようにするには、それらの関数の結果を返す必要があります。
関連する問題