2017-10-29 38 views
0

我創建了一個需要製表符的代碼,但我似乎無法弄清楚如何正確添加製表符。請參閱下面的代碼和文檔字符串以瞭解它應返回的內容以及它返回的內容。也許我應該重新思考我的整個方法?在適當位置添加製表符( 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的嘗試都會導致錯誤(例如:在每個字符串之間使用\ 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

非常感謝您!只是一個問題 - 加上+'\ t \旁邊的字母(在顯示+ =字母)我試圖在每個字符之間添加一個標籤猜測子列表之間,因爲它縮進'for字母'循環,但你的方法它添加因爲'display + ='\ t''不是'for循環中的字母'的一部分,因此子列表之間的選項卡? – Rir8

+0

這會在插入標籤之前的每個猜測中的最後一項之後留下尾部空格,這將導致格式錯誤的列 – mhawke

+0

@ Rir8這是正確的。 – gommb

0

您的代碼不會在猜測和線索之間添加一個標籤。你可以簡單地之間的第一和第二嵌套的for循環,但是,你則需要確保尾隨空間沒有在第一循環的末尾添加添加

display += '\t'

str.join()是一種更好的方式來處理這個,因爲它只是增加了分隔符串序列中的項目之間:

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

注意到有在上述沒有尾隨空格字符。將其應用於你的函數:

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:選項卡在那裏,只是第二列從製表位開始,因此選項卡的效果不可見。如果從函數的文檔字符串中打印預期的輸出字符串,則會看到相同的結果。上面的assert()語句確保函數產生所需的值。 – mhawke

-1

這對我有效。只需在這兩者之間添加標籤,以猜測和線索循環。

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')) 

這給了輸出:

Guess Clues 
**************** 
a  y 
t  k 
相關問題