2016-07-28 9 views
0

アイドル時にPython 3.4を使用する。なぜこのエラーメッセージが表示されるのですか?Python 3で2つの変数を整数に分割する問題

ValueError: invalid literal for int() with base 10: '4 4' 

私の入力文を整数に変換するとどうなりますか?私は、最初の方法が機能

num1 = int(num1) 
num2 = int(num2) 

を使用して、VS私の入力文でintを入れしようとしているが、なぜ第二の方法はないのでしょうか? 2番目の方法は、私がこのコードを実行した場合に動作します:

number = int(input("Number?")) 
print(number) 

なぜそれは2番目の方法で動作しませんか?

最初の方法では動作します:

#Ask the user to input 2 values and store them in variables num1 num2 

num1, num2 = input("Enter 2 numbers: ").split() 

#Convert the strings into regular numbers Integer 
num1 = int(num1) 
num2 = int(num2) 

# Type problems and store in a variable 
sum = num1 + num2 
difference = num1 - num2 
product = num1 * num2 
quotient = num1/num2 
remainder = num1 % num2 

print("{} + {} = {}".format(num1,num2,sum)) 
print("{} - {} = {}".format(num1,num2,difference)) 
print("{} * {} = {}".format(num1,num2,product)) 
print("{}/{} = {}".format(num1,num2,quotient)) 
print("{} % {} = {}".format(num1,num2,remainder)) 

この方法では動作しません。私はコードのこの部分だけを入れて、私が何をしたかを示しています。この行と文字列を整数(num = int)に変換するもう1つの方法の他に、コードの残りの部分は同じです。

第二の方法

num1, num2 = int(input("Enter 2 numbers: ")).split() 

答えて

0

あなたの第二の方法は、それを行うことはできませんint4 4を変換しようとしている、あなたは、個々の文字列として数ので、あなたのコードにintを適用する必要があります次のようになります。サイドノートで

num1, num2 = map(int, input('Enter 2 numbers: ').split()) 

- あなたに後で変数sumを呼び出すことにより、組み込みsum WHIをシャドウイングしていますchはさらに回線の問題を引き起こす可能性があります - 私は通常totalを使用します。

あなたはまた、それは少し簡単にするためoperatorモジュールの関数を利用することができます:

import operator as op 

num1, num2 = map(int, input('Enter 2 numbers: ').split()) 
for symbol, func in (
    ('+', op.add), ('-', op.sub), ('*', op.mul), 
    ('/', op.truediv), ('%', op.mod) 
): 
    print('{} {} {} = {}'.format(num1, symbol, num2, func(num1, num2))) 
    # or print(num1, symbol, num2, '=', func(num1, num2)) 

あなたを与えるだろう4 4を入力:

4 + 4 = 8 
4 - 4 = 0 
4 * 4 = 16 
4/4 = 1.0 
4 % 4 = 0 
関連する問題