-1

このコードを Python シェル バージョン 2.7.3 で使用していますが、このエラーが発生しています。コードは問題ないようで、どこが間違っているのかわかりません。

これはエラーです:

Traceback (most recent call last):
      File "C:\Python27\problem8euler.py", line 25, in <module>
        num.append(int(char))
    ValueError: invalid literal for int() with base 10: ''  

これが私のコードです:

string = # that really long number, edited out for page-width-sanity 

num = [] 

for char in string: 
    num.append(int(char)) 


answers = [] 


i = 0 

while i <= len(num) - 5: 
    k = i + 1 
    l = i + 2 
    m = i + 3 
    n = i + 4 
    prod = ( num[i] * num[k] * num[l] * num[m] * num[n]) 
    answers.append(prod) 
    i += 1 

print max(answers)

このコードは、Project Euler の問題 8 に対する私のソリューションです。

私が間違っているところについてコメントをいただければ幸いです。

4

1 に答える 1

1

stringスペース文字が含まれています。intのすべての文字を呼び出しstringint(' ')失敗します。

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

問題を修正するにはスペース文字を削除するかstring、次のようにスペースをスキップしてください。

string = '1 2'
num = [int(c) for c in string if not c.isspace()] 

[.. for ..]構成はリスト内包表記と呼ばれます。)

于 2012-09-13T18:28:15.067 に答える