Wörter vertikal in Python drucken

| | | | |

Die angegebene Zeichenfolge s. Geben Sie alle Wörter vertikal in derselben Reihenfolge zurück, in der sie in s erscheinen. Wörter werden als Zeichenfolgenliste zurückgegeben, bei Bedarf mit Leerzeichen aufgefüllt. (Das Gehen auf den Stufen ist nicht erlaubt). Jedes Wort wird nur in einer Spalte platziert und es gibt nur ein Wort pro Spalte.

Beispiel 1:

Input: s = "HOW ARE YOU" Output: ["HAY ","ORO","WEU"] Erläuterung: Jedes Wort wird vertikal gedruckt. "HAY" "ORO" "WEU" 

Beispiel 2:

Eingabe: s = "SEIN ODER NICHT SEIN" Ausgabe: ["TBONTB","OEROOE"," T"] Erläuterung: Nachfolgende Leerzeichen sind nicht zulässig. "TBONTB" "OEROOE" " T" 

Beispiel 3:

Eingabe: s = "CONTEST IS COMING" Ausgabe: ["CIC","OSO","NM", "TI","EN","SG","T"] 

Einschränkungen:

  • 1 <= s.length <= 200
  • s enthält nur englische Großbuchstaben.
  • Es ist garantiert, dass zwischen 2 Wörtern nur ein Leerzeichen steht.

Methode #1: [Horizontal to Vertical] using loop + " ‚"

Dabei fügen wir nach jedem Zeichen ein Zeilenumbruchzeichen hinzu, sodass jedes Element in der nächsten Zeile gerendert wird.

# Python3-Code, um die Funktionsweise von # Interconvert Horizontal and zu demonstrieren Vertical String # using [Horizontal to Vertical] using loop + " " # initializing string test_str = `geeksforgeeks` # original String drucken print("The original string is: " + str(test_str)) # using loop to add " " after every Zeichen res = `` für ele in test_str: res += ele + " " # Druckergebnis print("Der konvertierte String: " + str(res)) 

Ausgabe:

 Ausgabe Die ursprüngliche Zeichenfolge lautet: geeksforgeeks T er konvertierte Zeichenfolge: geeksforgeeks 

Methode #2: [Vertical to Horizontal] using replace() + " ‚"

Hier führen wir die Aufgabe der Konvertierung durch, indem wir " ‚" durch Ersetzen durch leer entfernen string.

# Python3-Code, um die Funktionsweise von # Interconvert Horizontal and Vertical String zu demonstrieren # unter Verwendung von [Vertical to Horizontal] using replace() + " " # initializing string test_str = `geeksforgeeks ` # Original-String drucken print( "Der ursprüngliche String ist: " + str(test_str)) # Verwendung von replace() + " " um dieses Problem zu lösen res = test_str.replace(" ", "") # Ergebnis drucken print("Der konvertierte String: " + str (res)) 

Ausgabe:

Die ursprüngliche Zeichenfolge lautet: geeksforgeeks Die konvertierte Zeichenfolge: geeksforgeeks 

Vertical Print String - Python3.2

StackOverflow-Frage

Ich schreibe ein Skript, das dauert als vom Benutzer eingegebene Zeichenfolge und drucken Sie sie vertikal wie folgt aus:

input = "John ging zum Laden" output = J wttsoaohthleonkreed 

Ich habe am meisten geschrieben des Codes, der wie folgt lautet:

import  sys def verticalPrint(astring): wordList = astring.split(" ") wordAmount = len(wordList) maxLen = 0 für ich in range (wordAmount): length = len(wordList[i]) if length >= maxLen: maxLen = length ### macht alle Wörter gleich lang, um Bereichsfehler zu vermeiden ### für i in range (wordAmount): if len(wordList[i]) < maxLen: wordList[i] = wordList[i] + (" ")*(maxLen-länge( wordList[i])) für i in Bereich (wordAmount): für j in Bereich (maxLen): print(wordList[i][j]) def main(): astring = input("String eingeben:" + ` `) verticalPrint(astring) main() 

Ich habe Probleme herauszufinden, wie ich die Ausgabe bekomme Korrekt. Ich weiß, dass es ein Problem mit der for-Schleife ist. Die Ausgabe lautet:

input = "John ging" output = Johnwalked 

Irgendwelche Ratschläge? (Außerdem möchte ich, dass der Befehl print nur einmal verwendet wird.)

Antwort:

Verwenden Sie itertools.zip_longest:

>>> von itertools importieren zip_longest >> > text = "John ging zum Laden" für x in zip_longest(*text.split(), fillvalue=` `): print (` `.join(x)) ...  J wttsoaohthleonkreed 

Angenommen, wir haben String s. Wir müssen alle Wörter vertikal in derselben Reihenfolge finden, in der sie in s erscheinen. Hier werden die Wörter als Liste von Strings zurückgegeben, ggf. müssen wir Leerzeichen auffüllen. (Leerzeichen am Ende sind nicht erlaubt.) Jedes Wort wird nur in einer Spalte platziert, und es gibt nur ein Wort in einer Spalte. Wenn also die Eingabezeichenfolge „LIKE YOU?“ lautet, lautet die Ausgabe [„HAY‚", „ORO‚", „WEU‚"]

Um dieses Problem zu lösen, folgen wir dem folgende Schritte:

  • s:= Erstelle eine Liste von Strings, die durch die Leerzeichen getrennt sind, erstelle ein leeres Array x, setze Zeile = 0
  • für jedes Wort I in s, setze Zeile: = Max von Zeile und Länge von i
  • col:= Länge von s
  • bilde ein Array und fülle es mit einer leeren Zeichenkette, und seine Größe ist die Zeile
  • für I im Bereich 0 bis Spalte ‚Äì 1
    • j:= 0
    • während j < Länge von s[i]
      • während i ‚Äì Länge von ans[j] >= 1, do ans[j]:= ans[j] verketten " ‚"
      • ans[j]:= ans[j] verketten s[i , j]
      • erhöhe j um 1
  • return ans
  • 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( Zeile)] j = 0 für 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.printVertically("WIE GEHT ES IHNEN")) print(ob.printVertically("SEIN ODER NICHT SEIN")) 

    Eingabe:

    "WIE GEHT ES DIR?" "SEIN ODER NICHT SEIN" 

    Ausgabe:

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