La chaîne donnée s. Renvoie tous les mots verticalement dans le même ordre qu`ils apparaissent dans s. Les mots sont renvoyés sous la forme d`une liste de chaînes, complétée par des espaces si nécessaire. (Marcher sur les marches n`est pas autorisé). Chaque mot ne sera placé que dans une seule colonne et il n`y aura qu`un seul mot par colonne.
Exemple 1 :
Entrée : s = "COMMENT VA TU" Sortie : ["HAY ","ORO","WEU"] Explication : Chaque mot est imprimé verticalement. "HAY" "ORO" "WEU"
Exemple 2 :
Entrée : s = "ÊTRE OU NE PAS ÊTRE" Sortie : ["TBONTB","OEROOE"," T"] Explication : Les espaces de fin ne sont pas autorisés. "TBONTB" "OEROOE" " T"
Exemple 3 :
Entrée : s = "CONCOURS ARRIVE" Sortie : ["CIC","OSO","NM", "TI","EN","SG","T"]
Contraintes :
- 1 <= s.length <= 200
- s ne contient que des lettres anglaises majuscules.
- Il est garanti qu`il n`y a qu`un seul espace entre 2 mots.
Méthode n°1 : [Horizontal vers Vertical] en utilisant la boucle + " ‚"
Dans ce cas, nous ajoutons un caractère de nouvelle ligne après chaque caractère afin que chaque élément soit rendu à la ligne suivante.
# code Python3 pour démontrer le fonctionnement de # Interconvert Horizontal and Chaîne verticale # en utilisant [Horizontal to Vertical] en utilisant loop + " " # chaîne d`initialisation test_str = `geeksforgeeks` # impression de la chaîne originale print("La chaîne originale est : " + str(test_str)) # utilisation de la boucle pour ajouter " " après chaque caractère res = `` pour ele dans test_str : res += ele + " " # impression du résultat print("La chaîne convertie : " + str(res))
Sortie :
Sortie La chaîne d`origine est : geeksforgeeks T il a converti la chaîne : geeksforgeeks
Méthode n°2 : [Vertical à Horizontal] en utilisant replace() + " ‚"
Dans ce cas, nous effectuons la tâche de conversion en supprimant " ‚" en remplaçant par vide string.
# Code Python3 pour démontrer le fonctionnement de # Interconvertir les chaînes horizontales et verticales # en utilisant [Vertical to Horizontal] en utilisant replace() + " " # initialisation de la chaîne test_str = `geeksforgeeks ` # impression de la chaîne originale print( "La chaîne d`origine est : " + str(test_str)) # en utilisant replace() + " " pour résoudre ce problème res = test_str.replace(" ", "") # impression du résultat print("La chaîne convertie : " + str (res))
Sortie :
La chaîne d`origine est : geeksforgeeks La chaîne convertie : geeksforgeeks
Chaîne d`impression verticale - Python3.2
Question StackOverflow
J`écris un script qui prendra en tant que chaîne saisie par l`utilisateur et imprimez-la verticalement, comme suit :
input = "John est allé au magasin" output = J wttsoaohthleonkreed
J`ai écrit la plupart du code, qui est le suivant :
import sys def verticalPrint(astring) : wordList = astring.split(" ") wordAmount = len(wordList) maxLen = 0 pour je dans plage (wordAmount) : longueur = len(wordList[i]) if length >= maxLen : maxLen = length ### donne à tous les mots la même longueur pour éviter les erreurs de plage ### pour i dans plage (wordAmount) : if len(wordList[i]) < maxLen : wordList[i] = wordList[i] + (" ")*(maxLen-len( wordList[i])) pour i dans plage (wordAmount) : pour j dans plage (maxLen) : print(wordList[i][j]) def main() : astring = entrée("Entrez une chaîne :" + ` `) verticalPrint(astring) main()
J`ai du mal à comprendre comment obtenir la sortie correct. Je sais que c`est un problème avec la boucle for. Sa sortie est :
input = "John a marché" output = J ohnwalked
Un conseil ? (De plus, je souhaite que la commande print ne soit utilisée qu`une seule fois.)
Réponse :
Utilisez itertools.zip_longest
:
>>> de itertools import zip_longest >> > text = "John est allé au magasin" pour x dans zip_longest(*text.split(), fillvalue=` `) : imprimer (` `.join(x)) ... J wttsoaohthleonkreed
Supposons que nous ayons la chaîne s. Nous devons trouver tous les mots verticalement dans le même ordre dans lequel ils apparaissent dans s. Ici, les mots sont renvoyés sous forme de liste de chaînes, si nécessaire, nous devons remplir des espaces. (Les espaces de fin ne sont pas autorisés.) Chaque mot sera placé dans une seule colonne et il n`y aura qu`un seul mot dans une colonne. Ainsi, si la chaîne d`entrée est "LIKE YOU ?", alors la sortie sera ["HAY‚", "ORO‚", "WEU‚"]
Pour résoudre ce problème, nous suivrons la étapes suivantes :
- j:= 0
- tandis que j < longueur de s[i]
- tandis que i ‚Äì longueur de ans[j] >= 1, faire ans[j]:= ans[j] concaténer " ‚"
- ans[j]:= ans[j] concaténer s[i , j]
- augmenter j de 1
class Solution(object): def printVertically(self, s ): s = s.split(" ") x = [] row = 0 for i in s: row = max(row, len(i)) col = len(s) ans = ["" for i in range( row)] 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 retour ans ob = Solution() print(ob.printVertically("COMMENT VA TU")) print(ob.printVertically("ÊTRE OU NE PAS ÊTRE"))
Saisie :
"COMMENT ÊTES-VOUS" "ÊTRE OU NE PAS ÊTRE"
Sortie :
["HAY","ORO","WEU"] ["TBONTB", "OEROOE"," T"]