Creé un código que requiere pestañas para ponerlo, pero parece que no puedo entender cómo agregar las pestañas adecuadamente. Vea a continuación mi código y la cadena de documentación para saber qué debería devolver y qué devuelve en su lugar. ¿Tal vez debería repensar todo mi enfoque?

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

Cuando lo uso (usando el ejemplo de cadena de documentación), obtengo:

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

'Guess \ tClues \ n **************** \ nY P G G b b \ nO O G G b b b b \ n'

Cualquier intento de poner \ t en el código tiene un resultado incorrecto (por ejemplo, con \ t entre cada cadena en lugar de donde deberían estar según la cadena de documentación). ¿Alguien puede sugerirme cómo puedo cambiar las cosas? ¡Gracias!

0
Rir8 29 oct. 2017 a las 05:59

3 respuestas

La mejor respuesta

Puede agregarlo entre los bucles for:

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
-1
gommb 29 oct. 2017 a las 03:10

Su código no agrega una pestaña entre la conjetura y la pista. Simplemente podrías agregar

display += '\t'

Entre el primer y el segundo bucle anidado, sin embargo, debe asegurarse de que no se agrega un espacio final al final del primer bucle.

str.join() es Una mejor manera de manejar esto, ya que solo agrega cadenas de delimitador entre los elementos de una secuencia:

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

Observe que no hay caracteres de espacio final en lo anterior. Aplicando eso a su función:

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() también se usa aquí para emparejar cada conjetura y pista. Entonces es simplemente una cuestión de usar str.join() en la conjetura y pista, y construir la cadena con la pestaña en el lugar requerido.

>>> 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
mhawke 29 oct. 2017 a las 03:30

Esto funcionó para mí. Simplemente agregue la pestaña entre esos dos para bucles de conjeturas y pistas.

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

Esto dio salida:

Guess    Clues 
**************** 
a        y 
t        k 
-1
Biplab 29 oct. 2017 a las 03:23