x의

2013-10-21 4 views
0

을 사용하여 이니셜을 쓰는 기능 이니셜 자체를 인쇄하는 함수를 작성해야합니다. 만약 당신이 이니셜이 없다면 중간에 x를 인쇄합니다. 나는 중간 이니셜이 없습니다. 그는 계속해서 우리가 함수에 입력 할 목록을 하드 코딩하라고 말했습니다.x의

그래서 내 함수는 x를 인쇄해야하는 열 번호가있는 목록을 가져옵니다. 목록의 숫자를 검사하여 인덱스 번호와 같은지 확인한 후 ax를 인쇄하고 공백을 인쇄하지 않으면 색인 값을 1 씩 줄이고 모든 프로세스가 반복 될 때까지 반복합니다. 목록의 번호가 확인되었습니다. 함수가 두 번째 목록의 각 줄 (첫 번째 목록)을 통과하도록 할 수 있도록 모든 작업을 수행해야하지만 첫 번째 목록에서 두 번째 목록을 복제하고 모든 첫 번째 목록과 함께 함수를 실행했습니다. 이 넣어 밖으로

import sys 
# function thst takes each row of the namelist and determines where to print x 
def oned (row) : 

     index = 11    
     while index >= 0 : 
      for numbers in row : 
       if numbers == index : 
        sys.stdout.write('X') 
       else : 
        sys.stdout.write(' ') 
       index = index - 1 
     print 


#Main 

namelist = [[11, 2, 1, 0], 
      [11, 2], 
      [11, 2], 
      [11, 8, 5, 2, 1, 0], 
      [11, 7, 6, 0], 
      [11, 7, 6, 0], 
      [11, 8, 5, 2, 1, 0]] 

testrow0 = [11, 2, 1, 0] 
testrow1 = [11, 2] 
testrow2 = [11, 2] 
testrow3 = [11, 8, 5, 2, 1, 0] #only prints 11, 2, 1, 0 needs 8, 5 
testrow4 = [11, 7, 6, 0]  #only prints 11, 0 needs 7,6 
testrow5 = [11, 7, 6, 0]  #skips over 7, 6 like other one 
testrow6 = [11, 8, 5, 2, 1, 0] #skips over 8, 5 

oned (testrow0) 
oned (testrow1) 
oned (testrow2) 
oned (testrow3) 
oned (testrow4) 
oned (testrow5) 
oned (testrow6) 

내가 원하는 것입니다하지만 사이에서 x가없는 어떤

X  XXX 
X  X 
X  X 
X  XXX 
X   X 
X   X 
X  XXX 

내 코드입니다. 이 오류의 원인을 찾지 못해서 알려 주시면 알 수 있습니다.

내가 좋아하는 출력이보고 싶지 :이 테스트 할 기회가 없었어요

X  XXX 
X  X 
X  X 
X X X XXX 
X XX  X 
X XX  X 
X X X XXX 

답변

0

,하지만 난 index=index-1가 잘못 믿습니다. index을 변경하면이 열을 완료하고 다음 열로 진행한다고 말합니다. 그것은 방금 x를 인쇄했거나 전체 행을 확인한 후에 발생해야합니다. 코드는 이제 row을 통해 걷는 동시에 index을 감소시킵니다.

편집 이 세 가지 변경 사항으로이 클리너가 정확 해졌습니다 (Python 2.7.3에서 테스트 됨).

  1. index이 행에 있는지 여부를 확인하기 위해 행을 반복 할 필요가 없습니다. in 운영자가 대신 해드립니다!
  2. while 루프는 항상 11, 10, ..., 0으로 단계를 밟습니다. 경계가 변경되지 않고 증분이 항상 -1이기 때문에 대신 for 루프를 사용하는 것이 좋습니다. range(11,-1,-1)[11, 10, ..., 0]이됩니다. 11이 시작되고, 첫 번째 -1은의 마지막 숫자 인 이고 두 번째 숫자는 -1입니다 (증가하지 않고 매번 감소합니다).
  3. 그리고 index의 이름을 더 구체적으로 변경했습니다. 당신이 말을하는 것은 sence을하게되지만

    def oned (row): 
        for colindex in range(11,-1,-1): # replaces the while loop 
         if colindex in row:   # replaces the for loop 
          sys.stdout.write('X') 
         else: 
          sys.stdout.write(' ') 
        print 
    
+0

, 나는 그것을 시도하고 단지 전체 코드를 올려요 –