2017-10-29 51 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 
相关问题