型変換の問題があります。float
an (または a int
、ここでは 2 つの違いについて少し説明します)にキャストすると、すべてうまくいきます。
a = float(input ("what is a"))
b = float(input ("what is b"))
また、Python インタープリターの使用も検討する必要があります。これは、コードを手動でステップ実行しようとしたときに得られたものです。
>>> a = input('what is a')
what is a3
>>> a*a # I put 3 in as my number, but it gave me the str value of '3'!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'
また、より良いエラー メッセージを表示できるようにすることもお勧めtry...except
します。それを使用while
すると、次のように作業するものがあることを確認できるようになります。
# Make them keep inputting "a" until they give you something
# you can actually work with!
while 1:
try:
a = float(input ("what is a"))
break
except TypeError:
print('That was not a number! please try again')
注: これは、入力が int を返す可能性があるため、Python 2.x で発生することではありません。