首先,是的,我知道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', '', '', '']
作为一个练习,任何人都可以找出它为什么不起作用?
答案 0 :(得分:4)
如果if语句为true,则只为s赋值。在节点10及更高版本的情况下,if语句永远不会为真,因此s仍为""
。
要更改它,请将s的赋值移出内部for block。并在for block之前设置zeros = ""
。