Imprimir palabras verticalmente en Python

| | | | |

La cadena dada s. Devuelve todas las palabras verticalmente en el mismo orden en que aparecen en s. Las palabras se devuelven como una lista de cadenas, rellenadas con espacios cuando es necesario. (No está permitido caminar sobre los escalones). Cada palabra solo se colocará en una columna y solo habrá una palabra por columna.

Ejemplo 1:

Entrada: s = "CÓMO ESTÁS" Salida: ["HAY ","ORO","WEU"] Explicación: Cada palabra está impresa verticalmente. "HAY" "ORO" "WEU" 

Ejemplo 2:

Entrada: s = "SER O NO SER" Salida: ["TBONTB","OEROOE"," T"] Explicación: No se permiten espacios finales. "TBONTB" "OEROOE" " T" 

Ejemplo 3:

Entrada: s = "CONCURSO VIENE" Salida: ["CIC","OSO","NM", "TI","EN","SG","T"] 

Restricciones:

  • 1 <= s.longitud <= 200
  • s contiene solo letras mayúsculas en inglés.
  • Se garantiza que solo hay un espacio entre 2 palabras.

Método n.º 1: [Horizontal a vertical] usando bucle + " ‚"

En esto, agregamos un carácter de nueva línea después de cada carácter para que cada elemento se represente en la siguiente línea.

# Código de Python3 para demostrar el funcionamiento de # Interconvert Horizontal y Cadena vertical # usando [Horizontal to Vertical] usando loop + " " # inicializando la cadena test_str = `geeksforgeeks` # imprimiendo la cadena original print("La cadena original es: " + str(test_str)) # usando el bucle para agregar " " después de cada carácter res = `` para ele en test_str: res += ele + " " # resultado de impresión print("La cadena convertida: " + str(res)) 

Salida:

 Salida La cadena original es: geeksforgeeks T convirtió la cadena: geeksforgeeks 

Método #2: [Vertical a Horizontal] usando replace() + " ‚"

En esto, realizamos la tarea de conversión eliminando " ‚" reemplazando por vacío string.

# Código de Python3 para demostrar el funcionamiento de # Interconvert Horizontal y Vertical String # usando [Vertical to Horizontal] usando replace() + " " # inicializando la cadena test_str = `geeksforgeeks ` # imprimiendo la cadena original print( "La cadena original es: " + str(test_str)) # usando replace() + " " para resolver este problema res = test_str.replace(" ", "") # imprimiendo el resultado print("La cadena convertida: " + str (res)) 

Salida:

La cadena original es: geeksforgeeks La cadena convertida: geeksforgeeks 

Cadena de impresión vertical - Python3.2

Pregunta de StackOverflow

Estoy escribiendo un script que tomará como cadena ingresada por el usuario e imprímala verticalmente, así:

input = "John caminó a la tienda" output = J wttsoaohthleonkreed 

He escrito la mayoría del código, que es el siguiente:

importar  sys def verticalPrint(una cadena): wordList = astring.split(" ") wordAmount = len(wordList) maxLen = < abarcan clase="hljs-number">0 para i en rango (wordAmount): longitud = len(wordList[i]) si longitud >= maxLen: maxLen = longitud ### hace que todas las palabras tengan la misma longitud para evitar errores de rango ### para i en rango (wordAmount): if len(wordList[i]) < maxLen: listaPalabras[i] = listaPalabras[i] + (" ")*(maxLen-len( wordList[i])) para i en rango (wordAmount): for j en rango (maxLen): imprimir(wordList[i][j]) def main(): astring = input("Ingrese una cadena:" + ` `) verticalPrint(astring) main() 

Tengo problemas para averiguar cómo obtener el resultado correcto. Sé que es un problema con el bucle for. Su salida es:

input = "John caminó" output = J ohn caminó 

¿Algún consejo? (Además, quiero que el comando imprimir se use solo una vez).

Respuesta:

Use itertools.zip_longest:

>>> de itertools importar zip_longest >> > texto = "John caminó hacia la tienda" for x en zip_longest(*text.split(), fillvalue=` `): imprimir (` `.join(x)) ...  J wttsoaohthleonkreed 

Supongamos que tenemos una cadena s. Tenemos que encontrar todas las palabras verticalmente en el mismo orden en que aparecen en s. Aquí las palabras se devuelven como una lista de cadenas, si es necesario, tenemos que completar espacios. (No se permiten espacios finales). Cada palabra se colocará en una sola columna, y solo habrá una palabra en una columna. Por lo tanto, si la cadena de entrada es "¿COMO TÚ?", entonces la salida será ["HAY‚", "ORO‚", "WEU‚"]

Para resolver este problema, seguiremos el siguientes pasos:

  • s:= haga una lista de cadenas divididas por espacios, haga una matriz vacía x, establezca fila = 0
  • para cada palabra I en s, establezca fila: = máximo de fila y longitud de i
  • col:= longitud de s
  • hacer una matriz y llenarla con una cadena vacía, y su tamaño es la fila
  • para I en el rango 0 a col ‚Äì 1
    • j:= 0
    • mientras que j
      • mientras i ‚Äì longitud de ans[j] >= 1, hacer ans[j]:= ans[j] concatenar " ‚"
      • ans[j]:= ans[j] concatenar s[i , j]
      • aumentar j en 1
  • retornar respuesta
  • clase Solución(objeto): def imprimirVerticalmente(self, s ): s = s.split(" ") x = [] fila = 0 for i in s: row = max(row, len(i)) col = len(s) ans = ["" for i in range( fila)] j = 0 for i in range(col): j = 0 while j < len(s[i]): #print(j, i) while i - len(ans[j]) >= 1: ans [j] += " " respuesta[j] += s[i][j] j += 1 return ans ob = Solución() print(ob.printVerticalmente("CÓMO ESTÁS")) print(ob.printVerticalmente("SER O NO SER")) 

    Input:

    "CÓMO ESTÁS" "SER O NO SER" 

    Salida:

    ["HAY","ORO","WEU"] ["TBONTB", "OEROOE", "T"]