Swift和Python:相同的代码会产生不同的结果

时间:2016-05-05 10:53:05

标签: python swift python-2.7

此问题包含Project Euler问题的解决方案1.如果您想自己解决问题,请立即停止阅读。

我在Python中解决了Project Euler Problem 1,所以我决定在Swift中也这样做。但是:这就是问题,使用相同的代码我在Python和Swift中得到两个不同的结果。

Swift的答案是1000(太高)。在Python中,结果为233168,在Swift中为234168

的Python

s = 0

for n in range(0, 1000):
    if n % 3 == 0 or n % 5 == 0:
        s += n

print(s)

结果:

233168

Try it online

夫特

var s = 0

for n in 0...1000 {
    if n % 3 == 0 || n % 5 == 0 {
        s += n
    }
}

print(s)

结果:

234168

Try it online

我的问题是:为什么?我究竟做错了什么?如何修复Swift代码?

2 个答案:

答案 0 :(得分:4)

Python范围不包括右端,所以最后1000正是差异,快速范围包括右端!在Python中,它主要用于执行range(len(some_collection))

的数组

在Python中,在swift range(1,1001)中使其成为1...999 ,您将获得相同的结果。

答案 1 :(得分:2)

PE问题#1要求 1000 1000以下的数字可以整除 Swift相当于range(start, stop)start ..< stop,使用..<运算符创建范围省略上限:

for n in 0 ..< 1000 { ... }