2012-09-21 3 views
0

먼저, str(n).zfill(width)은 숫자 앞에 패딩 0으로 잘 작동한다는 것을 알고 있습니다.숫자에 0을 채우는 파이썬 알고리즘

하지만 누구나 자신의 알고리즘을 작성하려 했습니까? 나는

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 

위의 함수는 계산 클러스터의 노드 이름을 인쇄 할 suppost입니다 ...을 시도했지만 작동하지 않습니다. 예 :

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

단지 운동으로, 왜 작동하지 않는지 알아낼 수 있습니까?

+0

관련 코드 http://stackoverflow.com/questions/339007/python-nicest-way-to-pad-zeroes-to-string/12531802 –

+0

코드는 노드를 의미하지만 정의하지는 않습니다. –

+0

사실, 그냥 큰 함수에서 snippit을 복사/붙여 넣기하고 그 줄을 잊어 버렸습니다. –

답변

4

if 문이 true 인 경우에만 s에 값을 할당합니다. 노드 10 이상인 경우 if 문은 참이 아니므로 s는 ""으로 남습니다.

변경하려면 블록 내부에서 s의 할당을 이동하십시오. for 블록 앞에 zeros = ""을 설정하십시오.

+0

예. 고마워 –

관련 문제