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:
- 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
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"]