2016-04-11 6 views
0

私は作業しているファイルが1行に1つの整数を持ち、カンマで番号を区切っていません。そのファイルの数値の合計を得るために行くと、正の整数の場合にのみ機能します。私が持っているものは、ファイル内の負の数値に対しては機能しません。それを達成できる方法はありますか?問題の私のコード:ファイル内の値の合計、ネガティブ?

if line.strip().isdigit(): 
      total += int(line) 

ファイル内のすべての数値が負の場合、それはちょうど私が同じ目標(ファイル内のすべての数字の合計)の可能性が実現するのは0、他のどのような方法として合計を返します正と負の整数を追加するのに使えるだろうか?

+0

可能性のある重複した[.isdigitと負の数を入力する方法?](http://stackoverflow.com/questions/28279732/how-to-type-negative-number -with-isdigit) –

+0

整数以外にファイルに何か他に何かありますか?そうでなければ、isdigit()チェックは不要です。はいの場合、それ以外には何が見つかりますか? –

+0

@ MarkusM。ファイルの中に整数のもの以外のものはありません。私はそれらの和を求めようとしています。 – Nick

答えて

1

これらのメソッドでは、すべての文字を数字にする必要があり、-はそうではないという問題があります。 How do I check if a string is a number (float) in Python?しかし、int型のためにそれを修正:ファイルがintと非整数型が含まれている場合は、多分is_number(s)を参照してください、https://docs.python.org/2/library/stdtypes.html

>>> "234".isalnum() 
True 
>>> "-234".isalnum() 
False 
>>> "-234".isalpha() 
False 
>>> "-234".isdigit() 
False 

を参照してください。以下のような何か:

def is_number(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 

、その後、あなたはis_digitを持っているところis_numberを使用しています。

+0

Pythonのストリングメソッドについて教えてくれてありがとう! – n1c9

+0

私は物事をインポートしようとしていません。何もインポートせずにこれを行う他の形式はありますか? – Nick

+0

@ニック私は自分の答えを編集しました。 – Tommy

1

の方法について

try: total += int(line) except: pass

+0

これは肯定的でない場合、数字を一緒に追加するだけで完全に合格するでしょうか? – Nick

+0

こんにちは@Nick、int( ' - 123')は正しく動作します。私はintに変換することが合法であるかどうかについて懸念する必要があると思います。 – rhinoxi