これが私のコードです:
def Area():
area = pi * radius * radius
pi = 3.14
radius = diameter * 2
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area)
cost()
area が定義されていないと表示されますが、area という変数があります。
これが私のコードです:
def Area():
area = pi * radius * radius
pi = 3.14
radius = diameter * 2
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area)
cost()
area が定義されていないと表示されますが、area という変数があります。
area
は関数内のローカル変数です。つまり、その関数の外ではアクセスできません。スコープと関数についてよく読んでください。ここでの最善の解決策は、関数から値を返し、引数を他の関数に渡すことです。
コードがどのように評価されるかを理解していないようです。コードは、一連のステートメントとして順番に実行されます。変数は、定義された後にのみ使用できます。ではArea()
、変数を使用しようとしてから変数を定義しています。これは意味がありません。
また、これは文字列から数値を取得する悪い方法であることに注意してくださいeval()
(低速であり、目的に合わせて設計されておらず、任意のコードを実行できる)、int()
代わりに使用してください。
また、PEP-8CapWords
は、クラスを保持しlowercase_with_underscores
、関数名を使用することを推奨しているため、Area()
おそらくarea()
. これにより、コードの一貫性と読みやすさを維持できます。
このコースをご覧になることをお勧めします https://class.coursera.org/programming1-2012-001/class/index。
あなたがすべき:
Area()
返品し ますarea
。Area()
fromを呼び出しcost()
、その結果を適切に利用します。最後に、ステートメント内の順序はArea()
非常に奇妙に見えます。
変数は、メソッドのスコープにローカライズされます。メソッドの値を使用する場合は、次のようになりますreturn
。
def area(diameter=1):
pi = 3.14
radius = diameter * 2
area = pi * radius * radius
return area
# Calling the value
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area(diameter))
元のコードで次のことにも言及する価値があります。
diameter
どこにも定義されていません。あなたの意図は、それをメソッドに渡すことです。そのヒントをここに示しました。