2017-10-22 4 views
4

私はちょうど(これで全く新しい)コード方法を学び始めたので、Pythonを使うことに決めました...私はx + yを追加して結果を与える関数を使いたいと思っていますが、x + yとxの和ではなく、その2つの数字。例えば。 1 + 1 = 11(2の代わりに)Pythonは数値を合計していないので、それらを一緒に貼り付けます

以下はコードです。私が間違っていることを教えてください。 !おかげで〜 (はい、私は本を使用していますが、それは何らかの形での説明にあいまいです[Pythonのに苦労して学ん])

def add(a, b): 
    print "adding all items" 
    return a + b 

fruits = raw_input("Please write the number of fruits you have \n> ") 
beverages = raw_input("Please write the number of beverages you have \n> ") 

all_items = add(fruits, beverages) 
print all_items 

はFYI、本は私を与えたコードはでした:

def add(a, b): 
    print "ADDING %d + %d" % (a, b) 
    return a + b 

def subtract(a, b): 
    print "SUBTRACTING %d - %d" % (a, b) 
    return a - b 

def multiply(a, b): 
print "MULTIPLYING %d * %d" % (a, b) 
return a * b 

def divide(a, b): 
    print "DIVIDING %d/%d" % (a, b) 
    return a/b 


print "Let's do some math with just functions!" 

age = add(30, 5) 
height = subtract(78, 4) 
weight = multiply(90, 2) 
iq = divide(100, 2) 

print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq) 

# puzzle 
print "Here is a puzzle." 

what = add(age, subtract(height, multiply(weight, divide(iq, 2)))) 

print "that becomes: ", what, "Can you do it by hand?" 
+0

これは、 'raw_input()'に入れたものが文字列であるため、このように張られているはずです。それを確認して整数に変換する –

+0

'raw_input'は、入力を文字列形式でint型に変換する必要があります。つまり、' fruits = int(raw_input( "果物の数を書きなさい\ n>")) ' –

+0

manそれは速い応答だった、ありがとう、私の問題を解決した多くのおかげで、私は本当に整数を使用する方法を教えてhavent(私はそれが完全に理解していなかったので非常に曖昧だった..)歓声:) –

答えて

10

python(および他の多くの言語)では、+演算子は二重の目的を果たします。これは、2つの数値(数値+数値)の合計を取得するか、文字列(文字列+文字列)を連結するために使用できます。ここで連結すると、一緒に参加することを意味します。

raw_inputを使用すると、ユーザーの入力が文字列形式で返されます。したがって、fruits + beveragesを実行すると、+という後者の意味が呼び出されます。これは文字列の連結です。

all_items = add(int(fruits), int(beverages)) 

int()がここに整数に両方の文字列を変換します

は、単純にビルトイン int()機能を使用し、数値として、ユーザの入力を処理するには。これらの番号は add()に渡されます。ユーザーが数字を入力したことを確認するチェックを実装しない限り、無効な入力はValueErrorを引き起こすことに注意してください。

+0

それは私がそれをさらによく理解するのを助けてくれてありがとう –

+0

@EricAhn喜んで私は助けることができました。待っている期間が終わったら、答えを[承諾](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)としてマークしてください。 – stybl

+0

微妙な疑問:単純にキャスト*するのではなく、値を 'int'オブジェクトに変換して実際に変換したいので、"キャスト "という言葉が間違っていると言います。 Python言語は他の言語と同じように実際に型キャスティングをしません。'int()' "関数"は実際には整数型の値のクラスである 'int'クラスのコンストラクタです(これはPythonの組み込み型です)。文字列引数で 'int()'を呼び出すことによって、その文字列を 'int'コンストラクタに渡し、対応する' int'オブジェクトを取得します。専門用語のポイント - そうでなければ、この答えは完全に正しいです。 –

2

'+'演算子は、文字列、リストなどの連結演算子、数値の加算演算子とすることができます。入力にint()ラッパーを追加してみてください。また、変数の型を参照することもできます。type()

+0

すばらしいコメントをいただき、ありがとうございました –

2

raw_input関数は数値ではなく文字列を返します。 +演算子は、文字列で使用されると、それらを連結します。

結果でint()またはfloat()を使用して文字列を数値に解析する必要があります。

関連する問題