web-dev-qa-db-ja.com

TypeError:/: 'str'および 'str'のサポートされていないオペランドタイプ

name = input('Enter name here:')
pyc = input('enter pyc :')
tpy = input('enter tpy:')
percent = (pyc / tpy) * 100;
print (percent)
input('press enter to quit')

このプログラムを実行するたびに、これを取得します

TypeError: unsupported operand type(s) for /: 'str' and 'str'

pycをtpyで除算するにはどうすればよいですか?

6
Deric miller

代わりにそれらを整数に変換することにより:

_percent = (int(pyc) / int(tpy)) * 100;
_

python 3では、input()関数は文字列を返します。これは常にです。これはPython 2;からの変更です; raw_input()関数はinput()に名前が変更されました。

16
Martijn Pieters

あなたが最初にすべきことは、エラーメッセージを読むことを学ぶことです。それはあなたに何を伝えますか?divide演算子で2つの文字列を使用することはできません。

では、なぜそれらが文字列であり、どのようにして非文字列にするのかを自問してください。すべての入力は文字列を介して行われるため、これらは文字列です。そして非文字列を作る方法はそれらを変換することです。

文字列を整数に変換する1つの方法は、 int 関数を使用することです。例えば:

percent = (int(pyc) / int(tpy)) * 100
6
Bryan Oakley

私は書いたでしょう:

percent = 100
while True:
     try:
        pyc = int(input('enter pyc :'))
        tpy = int(input('enter tpy:'))
        percent = (pyc / tpy) * percent
        break
     except ZeroDivisionError as detail:
        print 'Handling run-time error:', detail
0
Kovalchuk