2016-04-11 80 views
0

我有我正在使用的文件,每行有一個整數,沒有逗號分隔數字。當我去獲取該文件中的數字總和時,它只適用於正整數。我有什麼不適用於文件中的負數。任何方式能夠實現這一目標?我的代碼有問題:文件中的值總和,負值?

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

問題是這些方法要求所有字符都是數字,而-不是;看到https://docs.python.org/2/library/stdtypes.html

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

如果文件包含int和非整數,那麼也許看到is_number(s)How do I check if a string is a number (float) in Python?但修改它INT。喜歡的東西:

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

然後用is_number,你必須is_digit

+0

感謝learnin'我關於Python字符串方法! – n1c9

+0

我試圖不導入東西。沒有任何其他形式的這樣做而不導入任何東西? – Nick

+0

@尼克我編輯了我的答案。 – Tommy

1

怎麼樣

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

+0

如果這些數字不是肯定的,那麼這隻會將數字加在一起,不是嗎? – Nick

+0

Hi @Nick,int(' - 123')將正常工作。我認爲你只需要關心轉換爲int是否合法。 – rhinoxi