Code: Alles auswählen
def reverse_words(text):
stringlength = len(text)
slicedstring = text[stringlength::-1]
return slicedstring
Code: Alles auswählen
def reverse_words(text):
stringlength = len(text)
slicedstring = text[stringlength::-1]
return slicedstring
Code: Alles auswählen
def reverse_words(text):
slicedstring = text[::-1]
return slicedstring
Code: Alles auswählen
s = "Hello"[6:-1:-1]
Code: Alles auswählen
def reverse_words(text):
return text[::-1]
Code: Alles auswählen
>>>"Hello"[6:-7:-1]
'olleH'
Code: Alles auswählen
def reverse_words(str):
return ' '.join(s[::-1] for s in str.split())
Hey,kbr hat geschrieben: ↑Sonntag 1. Mai 2022, 15:03 Deine Ursprungsfrage war einen String "umzudrehen". Dies wurde Dir auch gezeigt. Was Du aber möchtest ist wohl etwas anderes, wie sich nun herausstellt:
Du möchtest die einzelnen Wörter in einem String "reversen", dabei aber die genaue Zahl trennender Leerzeichen beibehalten. Falls das nun tatsächlich die richtige Interpretation sein sollte. Dies ist streng genommen auch ein Kandidat für http://www.catb.org/~esr/faqs/smart-questions.html. Lies es einmal durch, es ist ganz nett zu lesen. Als Anfänger mag einem der Text überheblich vorkommen – sobald man aber einmal die Seiten gewechselt hat (das ist ein fließender Übergang), stellt es sich ganz anders dar.
Zu Deiner Frage: ja, Du musst den String in einzelne Worte auseinander nehmen, diese jeweils "reversen" und Dir die Zahl der trennenden whitespaces merken, um die Wörter dann wieder korrekt zusammenzufügen. Mit .split() alleine geht diese Information verloren.
Code: Alles auswählen
#!/usr/bin/env python3
import re
import pytest
def reversed_words(text):
return re.sub(r"\S+", lambda match: match.group()[::-1], text)
@pytest.mark.parametrize(
"text, expected",
[
("This is an example!", "sihT si na !elpmaxe"),
("double spaces", "elbuod secaps"),
(" d c b a ", " a b c d"), # FIXME Fails! What's wrong? Test case or code?
("elppa", "apple"),
],
)
def test_reversed_words(text, expected):
assert reversed_words(text) == expected