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 ステートメントが true の場合にのみ、値を s に代入しています。ノード 10 以降の場合、if ステートメントが true になることはないため、s が残り""ます。

それを変更するには、s の割り当てを for ブロックの内部から移動します。zeros = ""for ブロックの前に設定します。

于 2012-09-21T14:54:00.797 に答える