我是编程/ Python的新手,所以我的代码可能不是最有效的。这特别涉及项目欧拉的问题8。它写着:
查找具有最大产品的1000位数字中的13个相邻数字。这个产品的价值是什么?
我已经找到了以下代码的答案,但代码根据我如何定义1000位数字(称为a
)给出了问题。
当a
写在一行上时,它可以正常工作,但是当我在多行上用三引号实现它(由一个输入分隔)时,它会在第二个ValueError
循环中给出for
s当到达一条线的末端时a
。
有人可以向我解释为什么会发生这种情况以及如何解决这个问题?提前谢谢!
更确切地说,我得到的错误是:
ValueError: invalid literal for int() with base 10: '\n'
见下面的代码:
a = """7316717653... etc"""
product = 1
save = 0
list1 = []
list2 = []
for ab in range(0, len(a)-13):
start = ab
stop = ab+13
check = a[start:stop]
list1.append(check)
for a in list1:
for b in a:
product = product*int(b)
list2.append(product)
if product > save:
save = product
print('This is currently the largest product: ', product)
product = 1
else:
product = 1
print(max(list2))
答案 0 :(得分:0)
您最终会在list1
中以换行符(行分隔符,写为&#39; \ n&#39;)结束,如果您将变量编写为多行文本字符串,这是正常的。< / p>
您可以尝试使用标准Python连接将a
定义为没有任何换行符的文本:
a = (
"123456789"
"123456789"
"123456789"
)
这不会创建元组(它们需要一个尾随的逗号),a
实际上是字符串123456789123456789123456789
,没有任何分隔的换行符,int(b)
将停止抱怨。