0

首先,是的,我知道str(n).zfill(width)在数字前面填充零时效果很好。

但是有人试过为此编写自己的算法吗?我试过...

def printNodeNames(name, first, last, numPadZeros):
    for i in range(first, last+1):
        s = ""
        for j in range(0, numPadZeros):
            if i >= 10**j and i < 10**(j+1):
                zeros = ""
                for k in range(0, numPadZeros-j):
                    zeros = zeros + "0"
                s = name + zeros + str(i)
        nodes[i-1:i] = [s]
    return nodes

上述功能是为了打印计算集群的节点名称,但它不起作用。例子:

>>> printNodeNames('node', 1, 12, 1)
['node01', 'node02', 'node03', 'node04', 'node05', 
 'node06', 'node07', 'node08', 'node09', '', '', '']

作为一个练习,任何人都可以弄清楚为什么它不起作用?

4

1 回答 1

4

如果您的 if 语句为真,您只会为 s 赋值。在节点 10 及以上的情况下,if 语句永远不会为真,因此 s 仍然存在""

要更改它,请将 s 的分配移出内部 for 块。并zeros = ""在 for 块之前设置。

于 2012-09-21T14:54:00.797 回答