-1

我一直在 python shell-版本 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中的每个字符string,但int(' ')失败了:

>>> 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 回答