Imprimir palavras verticalmente em Python

| | | | |

A string s. Retorna todas as palavras verticalmente na mesma ordem em que aparecem em s. As palavras são retornadas como uma lista de strings, preenchidas com espaços quando necessário. (Não é permitido andar nos degraus). Cada palavra será colocada em apenas uma coluna e haverá apenas uma palavra por coluna.

Exemplo 1:

Entrada: s = "COMO VOCÊ ESTÁ" Saída: ["HAY ","ORO","WEU"] Explicação: Cada palavra é impressa verticalmente. "HAY" "ORO" "WEU" 

Exemplo 2:

Entrada: s = "SER OU NÃO SER" Saída: ["TBONTB","OEROOE"," T"] Explicação: Espaços à direita não são permitidos. "TBONTB" "OEROOE" " T" 

Exemplo 3:

Entrada: s = "CONTEST IS COMING" Saída: ["CIC","OSO","NM", "TI","PT","SG","T"] 

Restrições:

  • 1 <= s.length <= 200
  • s contém apenas letras maiúsculas em inglês.
  • É garantido que haja apenas um espaço entre 2 palavras.

Método nº 1: [Horizontal para Vertical] usando loop + " ‚"

Nisto, adicionamos caractere de nova linha após cada caractere para que cada elemento seja renderizado na próxima linha.

# Código Python3 para demonstrar o funcionamento de # Interconvert Horizontal e Vertical String # using [Horizontal to Vertical] using loop + " " # inicializando string test_str = `geeksforgeeks` # imprimindo original String print("A string original é: " + str(test_str)) # usando loop para adicionar " " após cada caractere res = `` for ele em test_str: res += ele + " " # imprimindo resultado print("A string convertida: " + str(res)) 

Saída:

 Saída A string original é: geeksforgeeks T ele converteu a string: geeksforgeeks 

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

Neste, realizamos a tarefa de conversão removendo " ‚" por substituição por vazio string.

# código Python3 para demonstrar o funcionamento de # Interconvert Horizontal and Vertical String # usando [Vertical to Horizontal] usando replace() + " " # inicializando string test_str = `geeksforgeeks ` # imprimindo original String print( "A string original é: " + str(test_str)) # usando replace() + " " para resolver este problema res = test_str.replace(" ", "") # imprimindo resultado print("A string convertida: " + str (res)) 

Saída:

A string original é: geeksforgeeks A string convertida: geeksforgeeks 

Vertical Print String - Python3.2

Pergunta do StackOverflow

Estou escrevendo um script que levará como string inserida pelo usuário e imprima-a verticalmente, assim:

input = "John andou até a loja" output = J wttsoaohthleonkreed 

Eu escrevi a maioria do código, que é o seguinte:

import  sys def verticalPrint(astring span>): wordList = astring.split(" ") wordAmount = len(wordList) maxLen = 0 para e em intervalo (wordAmount): comprimento = len(wordList[i]) if comprimento >= maxLen: maxLen = comprimento ### faz com que todas as palavras tenham o mesmo comprimento para evitar erros de intervalo ### para e em intervalo (wordAmount): if len(wordList[i]) < maxLen: wordList[i] = wordList[i] + (" ")*(maxLen-len( wordList[i])) para e no intervalo (wordAmount): para j em intervalo (maxLen): print(wordList[i][j]) def main(): astring = input("Digite uma string:" + ` `) verticalPrint(astring) main() 

Estou tendo problemas para descobrir como obter a saída correto. Eu sei que é um problema com o loop for. Sua saída é:

input = "João andou" output = J ohn andou 

Algum conselho? (Além disso, quero que o comando print seja usado apenas uma vez.)

Resposta:

Use itertools.zip_longest:

>>> de itertools importar zip_longest >> > text = "João foi até a loja" para x em zip_longest(*text.split(), fillvalue=` `): imprimir (` `.join(x)) ...  J wttsoaohthleonkreed 

Suponha que temos a string s. Temos que encontrar todas as palavras verticalmente na mesma ordem em que aparecem em s. Aqui as palavras são retornadas como uma lista de strings, se necessário, temos que preencher espaços. (Espaços à direita não são permitidos.) Cada palavra será colocada em apenas uma coluna e haverá apenas uma palavra em uma coluna. Assim, se a string de entrada for "LIKE YOU?", Então a saída será ["HAY‚", "ORO‚", "WEU‚"]

Para resolver este problema, seguiremos o seguintes passos:

  • s:= faça uma lista de strings divididas pelos espaços, faça um array vazio x, defina linha = 0
  • para cada palavra I em s, defina linha: = max de linha e comprimento de i
  • col:= comprimento de s
  • faz um array e preenchido com uma string vazia, e seu tamanho é a linha
  • para I no intervalo de 0 a col ‚Äì 1
    • j:= 0
    • enquanto j < comprimento de s[i]
      • while i ‚Äì comprimento de ans[j] >= 1, faça ans[j]:= ans[j] concatenar " ‚"
      • ans[j]:= ans[j] concatenar s[i , j]
      • aumentar j por 1
  • retornar ans
  • class Solução(objeto): def printVerticalmente(self, s ): s = s.split(" ") x = [] linha = 0 para i em s: linha = max(linha, len(i)) col = len(s) ans = ["" para i in range( linha)] 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] += " " ans[j] += s[i][j] j += 1 return ans ob = Solution() print(ob.printVerticalmente("COMO VOCÊ ESTÁ")) print(ob.printVerticalmente("SER OU NÃO SER")) 

    Entrada:

    "COMO VOCÊ ESTÁ" "SER OU NÃO SER" 

    Saída:

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