2

ユーザー入力を取得する際のPythonの非常に基本的な疑問です。Pythonは入力を文字列として受け取り、それを計算に使用するには整数に変更する必要がありますか? 次のコードでは:

a = raw_input("Enter the first no:")
b = raw_input("Enter the second no:")


c = a + b
d = a - b
p = a * b
print "sum =", c
print "difference = ", d
print "product = ", p  

Pythonは次のエラーを出します:

Enter the first no:2
Enter the second no:4

Traceback (most recent call last):
File "C:\Python27\CTE Python Practise\SumDiffProduct.py", line 7, in <module>
d=a-b
TypeError: unsupported operand type(s) for -: 'str' and 'str'

このエラーが発生する理由を教えてください。

4

4 に答える 4

1

はい、入力を文字列から整数に変更する必要があると考えるのは正しいです。

に置き換えa = raw_input("Enter the first no: ")ますa = int(raw_input("Enter the first no: "))

ValueError指定された入力が整数でない場合、これは a を発生させることに注意してください。このような例外を処理する方法については、こちらを参照してください (またはisnumeric()、文字列が数値かどうかを確認するために使用します)。

また、 Python 2.x では入力を評価するため (Python 3.x ではに置き換えられraw_inputますが)、これは正しくなく安全でない方法であることに注意してください。inputraw_inputinput

したがって、コード例は次のようになります。

try:
    a = int(raw_input("Enter the first no: "))
    b = int(raw_input("Enter the second no: "))
except ValueError:
    a = default_value1
    b = default_value2
    print "Invalid input"

c = a+b
d = a-b
p = a*b
print "sum = ", c
print "difference = ", d
print "product = ", p  
于 2013-08-20T11:59:36.577 に答える
0

raw_input()末尾の改行文字を取り除いた後(Enter キーを押したとき) 、ユーザーから入力された文字列を「文字列形式」として保存します。文字列形式で数学演算を使用しているため、これらのエラーが発生します。最初に入力文字列を int 変数にキャストしてa = int(a)からb = int(b)、これらの演算を適用します。

于 2013-08-20T12:06:16.630 に答える
0
a = input("Enter integer 1: ")
b = input("Enter integer 2: ")

c=a+b
d=a-b
p=a*b
print "sum =", c
print "difference = ", d
print "product = ", p  

input() を使用するだけで、正しい結果が得られます。raw_input は入力を文字列として受け取ります。

そしてもう1つ追加したい..なぜ3つの追加変数を使用するのですか?

ちょうど試して:

print "Sum =", a + b
print "Difference = ", a - b
print "Product = ", a * b 

コードを複雑にしないでください。

于 2013-08-20T12:07:00.523 に答える