如何修复用于查找出租车编号的Python If语句?

MDS0LDI3R

我正在一个脚本中查找小于或等于特定值的出租车编号(这样的编号,即n以至少两种不同的方式表示两个多维数据集的和)。

在我的脚本中,t是我当前的变量,尝试达到可以打印的最大出租车编号,但是脚本打印的值超出了我设置的限制。

t = 10000
cubes, crev = [x**3 for x in range(1,1000)], {}
# for cube root lookup
for x,x3 in enumerate(cubes): crev[x3] = x + 1

sums = sorted(x + y for x in cubes for y in cubes if y < x)

idx = 0
n = 0
for i in range(1, len(sums)-1):
    if sums[i-1] != sums[i] and sums[i] == sums[i+1]:
        if n<t:
            idx += 1
            n = sums[i]
            print "%10d"%(n)
        else:
            break

输出:

1729
4104
13832

设置t = 10000期望和期望的输出为:

1729
4104

有谁知道如何使if语句表现出所需的行为?我花了很多荒谬的时间来尝试进行这一小更改。

正如@BlivetWidget指出的那样,您正在检查的n,但打印的n尝试像这样更改代码。

老的:

if sums[i-1] != sums[i] and sums[i] == sums[i+1]:
    if n<t:
        idx += 1
        n = sums[i]
        print "%10d"%(n)
    else:
        break

新的:

if sums[i-1] != sums[i] and sums[i] == sums[i+1]:
    idx += 1
    n = sums[i]
    if n<t:
        print "%10d"%(n)
    else:
        break

那将是一个好的开始。然后,您可以进行一些其他更改,例如摆脱idx不使用值。而且您实际上也不需要n,因为这只是另一种书写方式sums[i]

if sums[i-1] != sums[i] and sums[i] == sums[i+1]:
    if sums[i]<t:
        print "%10d"%(sums[i])
    else:
        break

这看起来要简单得多,并且应该按照您的期望进行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章