2016-10-08 9 views
0

txtファイルを開いて読み込み、各行をループするプログラムを作成しています。 2列目と4列目の値を乗算し、5列目に代入してください。"TypeError:タプル(タプルを連結してタプルにすることのみ可能)"

A 500.00 A 84.15 ? 

B 648.80 B 77.61 ? 

C 342.23 B 39.00 ? 

これは私が書いたコードの一部であり、

for line in infile: 
    a,b,c,d = line.split() 
    e = eval(b) + eval(d) 

    print("{0:20}${1:20}{2:20}${3:20}{4:20}".format(a,b,c,d,e),file=outfile) 

私はこれらの数字を乗算する "にeval" を使用して数値に文字列をひそか

File "C:/Users/hee lim/Desktop/readfile2.py", line 19, in main e = eval(b) + eval(d) TypeError: can only concatenate tuple (not "float") to tuple

、というエラーを取得保管。 エラーにフラグを立てる理由を理解できません。

ご協力いただきありがとうございます。

+0

ページ全体をご覧ください。 –

+0

@TilakMadichetti私はあなたが_paste_を意味すると信じています。 –

答えて

1

この情報を見て、私はbevaldによって返された値がfloattuple型であることを言うことができます。そしてfloattuple+を実行することはできません。例:デバッグのため

>>> 5.0 + (2 ,3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'float' and 'tuple' 

、それがエラーを上げているもの値で見ることがforループの開始時にprint lineを追加します。

+0

ありがとう!!!私のコードを使ってデバッグしたところ、元のtxtファイルに "1,400.00"のタイプミスがあることがわかりました。パイソンはそれをタプルとして認識しました。 – heej

関連する問題