2017-01-16 8 views
0

ここで何が起こっているのか理解してください。私の目的は、 "input.txt"を読み込み、テキスト文書内の各行の最小、最大、平均を返す関数を作成することです。以下のように、文書内のテキストは次のとおりです。Python27 TypeError:型のサポートされていないオペランド+ = 'int'および 'str'

min:1,2,3,4,5,6 
max:1,2,3,4,5,6 
avg:1,2,3,4,5,6 

私のコードは次のようになります。

import re 

def process(): 

    file = open("input.txt", "r") 

    for line in file: 
     newL = re.findall("\d+", line) 

    minimum = min(newL) 
    maximum = max(newL) 
    length = len(newL) 
    numSum = sum(newL) 

    print newL 
    print minimum 
    print maximum 
    print length 
    print numSum 

    file.close() 

process() 

すべてが見出しに言及したエラーを与えるnumSumを除き、細かい出力します。

+0

[strとintオブジェクトをどのように連結できますか?](http://stackoverflow.com/questions/25675943/how-can-i-concatenate-str-and-int-オブジェクト) – Faibbus

答えて

1

re.findallは、["foo", "bar", "baz"]のような文字列のリストを返します。

def sum(xs): 
    total = 0 
    for x in xs: 
     total += x 
    return total 

だから、いくつかの点で、それはPythonがstringintを追加する方法を知らないため、total = 0 + "foo"のような行を実行し、転倒しようとします:sumの実装は、このようなものです。式1+'1''11'または2のいずれかになりますが、Pythonはどちらを推測できないため、実際にはすべての文字列にintが含まれていることは重要ではありません。

各行を読むときは、すべての文字列をintに変換する必要があります。あなたの問題を解決する必要があります

+1

@ ZeroPiraeus、確かに、私はもっと簡単な例を望んでいました。 OPがかなり新しいようで、これは宿題の問題かもしれませんが、私は解決策を手渡したくありませんでした。 – ymbirtt

+0

ありがとうございます。私は整数をすべての文字列をキャストするためにリストの理解度を追加し、それは働いた。 'newL2 = [int(item)for newL]' – Muzi

+0

@Muzi、心配なし。この回答があなたの問題を解決した場合は、緑のダニでそれを受け入れることができます。また、私の答えを編集してあなたのソリューションを組み込むことが建設的であるかもしれません。 – ymbirtt

関連する問題