2016-09-19 38 views
0

此问题要求总计100个数字,每个数字长度为50个数字。 http://code.jasonbhill.com/python/project-euler-problem-13/Project Euler#13 Python。错误结转

我们可以用 “\ N +”,在记事本++得到

a=37107287533902102798797998220837590246510135740250 
+46376937677490009712648124896970078050417018260538 
... 
+20849603980134001723930671666823555245252804609722 
+53503534226472524250874054075591789781264330331690 
print(a) 

>>37107287533902102798797998220837590246510135740250(不正确的)

我们可以以及与\na+=替换\n得到

a=37107287533902102798797998220837590246510135740250 
a+=46376937677490009712648124896970078050417018260538 
... 
a+=20849603980134001723930671666823555245252804609722 
a+=53503534226472524250874054075591789781264330331690 
print(a) 

>>553...替换\n(正确)

这似乎是BigInteger算术的一个特性。在哪些条件下,所有数字的总和(方法1)从迭代增量(方法2)产生不同的结果?

回答

1

正如您在结果中看到的,第一组指令不计算总和。它保留了第一项任务。由于+N本身就是一个有效的指令,所以在赋值之后的下一行什么也不做。因此

a=42 
+1 
print a 

打印42

要在两行写的指令时,你需要躲避结束换行符\n

a=42\ 
+1 
0

Python源代码行以换行符结尾。第一个例子中的后续行是单独的表达式语句,由单个整数组成,前面带有一元加号运算符,但它们不做任何事情。他们评估表达式(导致整数常量本身),然后忽略结果。如果您将所有数字放在一行中,或者在添加时使用括号,则简单的总和也会起作用。

相关问题