Por lo tanto, se supone que debo imprimir una cara sonriente con Ascii txt utilizando una matriz 2D ingresada de valores int. Hasta ahora, mi código cambia el int a Ascii y luego imprime, sin embargo, solo imprime 2 líneas.

Estoy seguro de que esto es un malentendido del código de mi parte, pero no estoy seguro de cómo solucionarlo.

Mi código:

def display(x):
    for i in x:
        for j in i:
            j = chr(j)
            print (j, end = ' ')
-7
Andrew 11 ene. 2017 a las 06:42

3 respuestas

La mejor respuesta

Qué tal esto

def display(x):
    for i in x:
        for j in i:
            j = chr(j)
            print (j, end = ' ')
        print()

Si cada i representa una línea, debe agregar una impresión adicional para comenzar de nuevo en la siguiente línea

2
Copperfield 11 ene. 2017 a las 03:52

Una 'matriz 2d' es presumiblemente una secuencia de secuencias, y cada secuencia interna presenta una línea. Por lo tanto, debe agregar una nueva línea después de cada línea. Si su código no emite nuevas líneas, sospecho que solo ve 2 líneas porque su pantalla agregó un salto de línea suave en algún momento.

Creo que solo necesita agregar una línea print() al final.

            ...
            print (j, end = ' ')
        print()

Aquí hay un código equivalente que funciona con una cara de ejemplo.

# Create ints for known face
orig = '''\
_____
| O |
| - |
-----
'''

ints = [[ord(c) for c in line] for line in orig.splitlines()]
for line in ints: print(line)

# Reproduce orig

copy = '\n'.join(((''.join(chr(i) for i in line)) for line in ints))
print(copy)

Huellas dactilares

[95, 95, 95, 95, 95]
[124, 32, 79, 32, 124]
[124, 32, 45, 32, 124]
[45, 45, 45, 45, 45]
_____
| O |
| - |
-----
3
Terry Jan Reedy 11 ene. 2017 a las 04:15

Debe usar python 3.x para usar end=''. En Python 2.x, simplemente terminaría su línea con una coma.

print j,
-4
Soviut 11 ene. 2017 a las 03:47