2017-05-28 3 views
-1

まあまあ、私は現時点ではPythonで新しく、このような単純な仕事に絶対に混乱している。 2つの数値の平均を計算する関数を書く必要がありますが、平均を出力するように数値を入力する必要があります。2つの数値の平均を計算する関数を書く(Python。)定義されていない名前を取得し続ける

私は名前のエラーを取得し続ける、名前 'number2'は定義されていません。下は自分のコードです。

number1 = raw_input("Enter number1") 
number2 =raw_input("Enter number2") 

def average(number1, number2): 
    return (number1 + number2)/2 
avg=average = (number1,number2) 
print avg 

私は間違ったことをしています。私はその明らかなことを知っていますが、私はそれに私の指を置くことはできません。

+0

を私はしたいと思います: '平均=平均(数値1、数値2)'どこかで... int'または ''にそれらの入力文字列を変換した後、浮かべる ' – schwobaseggl

答えて

0

あなたの関数を間違って呼び出しています。あなたは実行する必要があります。

以下
#    v type-cast value to `int` as `raw_input` returns `str` object 
avg = average(int(number1), int(number2)) 
#^ ^make a call to `average()` and store the returned value as `avg` 

は、完全なコードサンプルです:

>>> number1 = raw_input("Enter number1: ") 
Enter number1: 12 
>>> number2 =raw_input("Enter number2: ") 
Enter number2: 45 
>>> def average(number1, number2): 
... return (number1 + number2)/2.0 # `2.0` to get floating precision 
... 
>>> avg = average(int(number1), int(number2)) 
>>> avg 
28 

注:Pythonの2.xではint値を返すint 2の一部門。あなたはfloatような応答をしたい場合は、あなたが関数として定義されているaverage部門

+1

ありがとう!私は平均を除いて前にそれを持っていた、私はそれが愚かな間違いだったことを知っていたが、私は良くなって、感謝に取り組んでいる! – KillingForVanity

1

ため2.0の代わり2を使用して、あなたは関数としてそれを使用する必要があります。このようなもの:

number1 = raw_input("Enter number1") 
number2 =raw_input("Enter number2") 

def average(number1, number2): 
    return (int(number1) + int(number2))/2.0 

avg=average(number1,number2) 
print avg 

他にも2つのことがありました。あなたは文字列を整数に変換しなければなりません。良い平均を得るためには、2.0のinstadで2を除算する必要があります。それを解決するもう一つの方法は、文字列をfloatに直接変換することです。

+0

文字列をintで区切っていますか? – schwobaseggl

+0

ありがとうございます。今すぐ修正しました。 – klutt

-1

あなたはこのような何かを試すことができます。

#get number 1, number2 as integers 
number1 = int(raw_input("Enter number1")) 
number2 =int(raw_input("Enter number2")) 
#your function as it was 
def average(number1, number2): 
    return (number1 + number2)/2 
#function `average` returns an int. Store that result in `avg` 
avg = average(number1,number2) 
#print the result 
print(avg) 
0

は、何が間違ってやっていることは算術演算の前に整数に変換raw_input取っていません。

数値をpythonで使用する場合、入力コマンドがすでにintとしてそれを取っているので、raw_iniputを整数に変換しないように、raw入力以外のinput()を常に使用してください。

def avg(a=input('Pls enter val 1: '),b=input('Pls entr val 2: ')): 
    return ((a/b)/2.0) 

a=avg() 

、常に答えはフロートであるかどうかをintを返します2つの整数を分割し、原因を分割しながら、常に浮動小数点値を使用するのpython 2.7を使用した場合。 だから、あなたもこのようなものを使用することができます。

number1 = float(input("Enter number1")) 
number2 = float(input("Enter number2")) 

def average(number1, number2): 
    return (number1 + number2)/2.0 
avg=average = (number1,number2) 
print avg 
関連する問題