Drukuj słowa pionowo w Pythonie

| | | | |

Podany ciąg s. Zwróć wszystkie słowa pionowo w tej samej kolejności, w jakiej występują w s. Słowa są zwracane jako lista ciągów, w razie potrzeby uzupełniona spacjami. (Chodzenie po schodach jest zabronione). Każde słowo zostanie umieszczone tylko w jednej kolumnie i będzie tylko jedno słowo w kolumnie.

Przykład 1:

Input: s = "JAK SIĘ TY" Wyjście: ["HAY ","ORO","WEU"] Objaśnienie: Każde słowo jest drukowane pionowo. "HAY" "ORO" "WEU" 

Przykład 2:

Wejście: s = "BYĆ ALBO NIE BYĆ" Wyjście: ["TBONTB","OEROOE"," T"] Objaśnienie: Spacje na końcu są niedozwolone. "TBONTB" "OEROOE" "T" 

Przykład 3:

Wejście: s = "KONKURS NADCHODZI" Wyjście: ["CIC","OSO","NM", "TI","EN","SG","T"] 

Ograniczenia:

  • 1 <= s.length <= 200
  • s zawiera tylko wielkie litery angielskie.
  • Gwarantujemy, że jest tylko jedna spacja między dwoma słowami.

Metoda nr 1: [Poziomo do pionu] przy użyciu pętli + " ‚ù

W tym przypadku dodajemy znak nowej linii po każdym znaku, aby każdy element był renderowany w następnym wierszu.

# Kod Python3 demonstrujący działanie # Interconvert Poziomo i Vertical String # using [Horizontal to Vertical] using loop + " " # inicjowanie ciągu test_str = `geeksforgeeks` # drukowanie oryginalnego String print("Oryginalny ciąg to: " + str(test_str)) # używanie pętli do dodawania " " po każdym znak res = `` for ele in test_str: res += ele + " " # wynik drukowania print("Przekonwertowany ciąg: " + str(res)) 

Wyjście:

 Wyjście Oryginalny ciąg to: geeksforgeeks T przekonwertował ciąg: geeksforgeeks 

Metoda nr 2: [Pionowo na poziomo] za pomocą replace() + „

W tym celu wykonujemy zadanie konwersji, usuwając „ przez zastąpienie pustym string.

# Kod Python3 demonstrujący działanie # Interkonwertuj w poziomie i w pionie String # używając [Vertical to Horizontal] using replace() + " " # inicjowanie string test_str = `geeksforgeeks ` # drukowanie oryginalnego String print( "Oryginalny ciąg to: " + str(test_str)) # użycie replace() + " " do rozwiązania tego problemu res = test_str.replace(" ", "") # wynik drukowania print("Przekonwertowany ciąg: " + str (res)) 

Wyjście:

Oryginalny ciąg to: geeksforgeeks Przekonwertowany ciąg: geeksforgeeks 

Pionowy ciąg znaków — Python3.2

Pytanie StackOverflow

Piszę skrypt, który zajmie jako ciąg wprowadzony przez użytkownika i wydrukuj go pionowo, na przykład:

input = "Jan poszedł do sklepu" output = J wttsoaohthleonkreed 

Napisałem większość kodu, który wygląda następująco:

import  sys def verticalPrint(string): wordList = astring.split(" ") wordAmount = długość(wordList) maxLen = 0 dla i w zakres (wordAmount): length = len(wordList[i]) if length >= maxLen: maxLen = length ### powoduje, że wszystkie słowa mają tę samą długość, aby uniknąć błędów zakresu ### dla i w zakresie (wordAmount): if (wordList[i]) < maxLen: wordList[i] = wordList[i] + (" ")*(maxLen-długość( wordList[i])) dla i w zakresie (wordAmount): dla j w zakresie (maxLen): drukuj(wordList[i][j]) def główne(): ciąg = dane wejściowe("Wprowadź ciąg:" + ` `) verticalPrint(astring) main() 

Mam problem ze znalezieniem danych wyjściowych prawidłowy. Wiem, że to problem z pętlą for. Jego dane wyjściowe to:

dane wejściowe = "John chodził" dane wyjściowe = Jan chodził 

Jakaś rada? (Ponadto chcę, aby polecenie drukuj zostało użyte tylko raz.)

Odpowiedź:

Użyj itertools.zip_longest:

>>> z itertools import zip_longest >> > text = "Jan poszedł do sklepu" dla x in zip_longest(*text.split(), fillvalue=` `): drukuj (` `.join(x)) ...  J wttsoaohthleonkreed 

Załóżmy, że mamy ciąg s. Musimy znaleźć wszystkie słowa pionowo w tej samej kolejności, w jakiej występują w s. Tutaj słowa są zwracane jako lista ciągów, jeśli to konieczne, musimy wypełnić spacje. (Spacje końcowe są niedozwolone.) Każde słowo zostanie umieszczone tylko w jednej kolumnie, aw jednej kolumnie będzie tylko jedno słowo. Tak więc, jeśli ciąg wejściowy to „LUBI CIEBIE?”, to wynikiem będzie [„HAY”, „ORO”, „WEU”

Aby rozwiązać ten problem, zastosujemy następujące kroki:

  • s:= utwórz listę ciągów podzielonych przez spacje, utwórz jedną pustą tablicę x, ustaw wiersz = 0
  • dla każdego słowa I w s, ustaw wiersz: = max wiersza i długość i
  • kol:= długość s
  • utwórz jedną tablicę i wypełnij pustym ciągiem, a jego rozmiar to wiersz
  • dla I w zakresie od 0 do kol. 1
    • j:= 0
    • podczas gdy j < długość s[i]
      • podczas gdy ja – długość ans[j] >= 1, wykonaj ans[j]:= ans[j] połącz " ‚
      • ans[j]:= ans[j] połącz s[i , j]
      • zwiększ j o 1
  • zwróć 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( wiersz)] 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.printVertically("JAK JESTEŚ")) print(ob.printVertically("BYĆ ALBO NIE BYĆ")) 

    Wejście:

    "JAK JESTEŚ" "BYĆ ALBO NIE BYĆ" 

    Wyjście:

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