2017-10-29 1 views
0

탭을 넣어야하는 코드를 만들었지 만 탭을 적절히 추가하는 방법을 생각할 수 없습니다. 내 코드와 반환해야 할 내용에 대한 doc 문자열 및 대신 반환되는 내용은 아래를 참조하십시오. 어쩌면 내 접근 방식을 다시 생각해야 할까? 나는 (문서화 문자열 예제를 사용하여)을 사용하는 경우내 자리에 적절한 자리에 탭 ( t) 추가하기

def display_game(guesses, clues): 
'''(list, list) -> str 
Given two lists of single character strings, return a string 
that displays the current state of the game 
>>>display_game([['Y', 'P', 'G', 'G'], ['O', 'O', 'G', 'G']], [['b', 'b'], ['b','b', 'b', 'b']]) 
'Guess\tClues\n****************\nY P G G\tb b\nO O G G\tb b b b\n' 
''' 
display = 'Guess\tClues\n****************\n' 
for i in range(len(guesses)): 
     for letter in guesses[i]: 
      display += letter + ' ' 
     for letter in clues[i]: 
      display += letter + ' ' 
     display += '\n' 
return display 

, 내가 얻을 :

display_game([['Y', 'P', 'G', 'G'], ['O', 'O', 'G', 'G']], [['b', 'b'],  ['b','b', 'b', 'b']]) 

'\ tClues \ n 추측 *************** * \ nY PGG bb \ nO OGG bbbb \ n '

코드에 \ t 넣으려는 시도가 잘못되었습니다. (예 : doc 문자열 당 위치가 아닌 각 문자열 사이에 \ t 사용). 누구든지 내가 주변 상황을 바꿀 수있는 방법을 제안 할 수 있습니까? 감사!

답변

-1

당신은 루프의 사이를에 추가 할 수 있습니다

for i in range(len(guesses)): 
     for letter in guesses[i]: 
      display += letter + ' ' 
     display += '\t' # right here 
     for letter in clues[i]: 
      display += letter + ' ' 
     display += '\n' 
return display 
+0

가 대단히 감사합니다 :

def display_game(guesses, clues): display = 'Guess \t Clues \n **************** \n' for i in range(len(guesses)): for letter in guesses[i]: display += letter + ' ' display += '\t' for letter in clues[i]: display += letter + ' ' display += '\n' return display print(display_game('at', 'yk')) 

이 출력을 준! 한 가지 질문 - '\ for \'문자를 (표시 + 문자 =) 옆에 추가하면 추측 된 하위 목록의 각 문자 사이에 탭이 추가됩니다. 'display + ='\ t ''가 'for letter in'루프의 일부가 아니기 때문에 하위 목록 사이에 탭이 있습니까? – Rir8

+0

이렇게하면 탭을 삽입하기 전에 각 항목의 마지막 항목 뒤에 후행 공백이 생기므로 형식이 잘못 지정된 열이 생깁니다. – mhawke

+0

@ Rir8 맞습니다. – gommb

0

귀하의 코드는 추측과 단서 사이에 탭을 추가하지 않습니다. 당신은 단순히 처음과 루프에 대한 중첩 된 두 번째, 그러나, 당신은 다음 후행 공백이 첫 번째 루프의 끝에 추가되지 않도록 할 필요가 사이에

display += '\t'

을 추가 할 수 있습니다. 위의 후행 공백 문자가없는

>>> ' '.join(['a', 'b', 'c']) 
'a b c' 

공지 것을 :

str.join() 그것은 단지 시퀀스의 항목 사이에 구분 기호 문자열을 추가로이 처리하는 더 좋은 방법입니다. 함수에 그 적용 :

def display_game(guesses, clues): 
    display = 'Guess\tClues\n****************\n' 
    for guess, clue in zip(guesses, clues): 
     display += '{}\t{}\n'.format(' '.join(guess), ' '.join(clue)) 
    return display 

zip() 또한 각각의 추측과 단서를 페어링 여기에 사용됩니다. 그런 다음 추측과 단서에 str.join()을 사용하고 필요한 위치에 탭이있는 문자열을 작성하기 만하면됩니다.

>>> assert(display_game([['Y', 'P', 'G', 'G'], ['O', 'O', 'G', 'G']], [['b', 'b'], ['b','b', 'b', 'b']]) == 'Guess\tClues\n****************\nY P G G\tb b\nO O G G\tb b b b\n') 
+0

코드를 사용하면'\ t'가 올바르게 배치되지만 결과를 인쇄하면 탭이 없습니다. – gommb

+0

@ gommb : 탭이 있습니다. 두 번째 열이 탭 중단 지점에서 시작되므로 탭 효과가 표시되지 않습니다. 함수의 docstring에서 예상되는 출력 문자열을 인쇄하면 동일한 결과를 볼 수 있습니다. 위의 assert() 문은 함수가 필수 값을 생성하도록합니다. – mhawke

-1

이것은 나를 위해 일했습니다. 추측과 단서의 반복을 위해이 둘 사이에 탭을 추가하기 만하면됩니다.

Guess Clues 
**************** 
a  y 
t  k 
관련 문제