2010-12-19 10 views
3
>>> n = ''.join(i for i in x if i.isdigit()) 
>>> n.isdigit() 
True 
>>> x.isdigit() 
False 

>>> previous = 0 
>>> next = 100 
>>> answer = 0 


>>> for i in range(0,100): 
...  answer += int(n[previous:next]) 
...  previous = next 
...  next += 100 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
ValueError: invalid literal for int() with base 10: '' 

なぜこのエラーが発生しますか?あなたが見るのn桁であるように。..ベース10のintの無効なリテラル: ''

答えて

7

nは数値かもしれませんが、いくつかの段階で、あなたはn[previous:next]はまったく文字が含まれていないことをnなどの長さを過ぎていきます。空の文字列''はintに変換できません。したがって、完全なストーリーを示すエラー:invalid literal for int() with base 10: ''

>>> int('') 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '' 
+0

さて、あなたは私は、文字列からすべてを削除したが、数字のn =「」.join(xの私のために私はi.isdigit()があれば)、これは仕事をしませんでした見ることができるように? – Marijus

+0

@Marijus非数字を削除しても、空の文字列を取得することはできません。空の文字列には「数字のみ」が含まれますが、依然として整数ではありません。 – marcog

+0

これは私が答え+ = int(n [previous:next])を使った理由です。 – Marijus

関連する問題