【问题标题】:Python sum of digits error [duplicate]Python数字总和错误[重复]
【发布时间】:2014-12-09 19:02:50
【问题描述】:

在使用 Python(我是初学者)解决 Project Euler 问题时,我遇到了以下错误。问题是求 2^1000 的数字之和。为此,我编写了以下代码:

sum=0
x=2**1000
while(x):
  sum += x%10
  print(sum) #Just to check whats happening
  x /= 10

print("\n"*5)
print("Sum = ",sum)

为此,我将小数加起来。

输出:

6
10.0
10.0 
12.0
16.0

....

1116.0
1122.0
1131.625  #Why does the decimal get added?
1138.59375

 .....

 1181.495136589947
 1186.5812084526442
 1188.089815638914
 1195.240676357541
 1195.9557624294036
 1197.0272710365898
 1197.1344218973084
 1197.1451369833803
 1197.1462084919874

 .....
 1197.1463275484991 #This number gets repeated a lot of times
 1197.1463275484991
 1197.1463275484991



 Sum = 1197.1463275484991

请解释发生了什么并提供帮助。

【问题讨论】:

  • sum 是内置的,你应该使用另一个名字

标签: python sum digits sum-of-digits


【解决方案1】:

使用整数除法而不是浮点数:

x //= 10

【讨论】:

【解决方案2】:

不知道您是否正在寻找替代实现,但如果您不想冒险进入浮点领域,这可能会更直接。

# Python 2.7
x = str(2**1000)
print sum([int(i) for i in x])

【讨论】:

  • 谢谢。我是 python 新手,我来自 C 和 C++ 的奇异之地。所以这就是我在 C 中使用的,所以我在 Python 中实现了相同的逻辑。
猜你喜欢
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 2013-04-22
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
相关资源
最近更新 更多