Funktion mit jedem zweiten Buchstaben groß
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Es tut mir leid.Ich war wohl in gedanken... ich meinte Variante 2 ist die richtige.
Nur, dass das falsche Beispiel nicht die mit den einzeln betrachteten Wörtern ist. Bei "iCh nEhMe gErAdE iN dEr sChUlE dAs tHeMa pYtHoN dUrCh" nimmst du jedes Zeichen, hast aber ab dem "in" einen Versatz.
Dann definiere "Wort". Was definiert ein Wort und grenzt es vom Rest des Textes ab. Ist "Castrop-Rauxel" ein Wort oder zwei?phythonkid hat geschrieben: ↑Donnerstag 2. April 2020, 12:41 Es tut mir leid.Ich war wohl in gedanken... ich meinte Variante 2 ist die richtige.
Tut mir Leid ich verstehe nicht was du mit Versatz meinst
Habe das mit folgendem Code gemacht: (Ist ja eh die falsche Variante darum nehme ich keinem die Hausaufgaben weg)
Habe das mit folgendem Code gemacht: (Ist ja eh die falsche Variante darum nehme ich keinem die Hausaufgaben weg)
Code: Alles auswählen
def upper_every_second_letter_in_word(input_string):
temp = []
all_words = re.findall(r'\b\w+\b', input_string)
for word in all_words:
temp.append("".join(char.upper() if index % 2 else char.lower() for index, char in enumerate(word)))
return " ".join(temp)
Was genau ist denn jetzt gewollt?
text = "ich nehme gerade in der schule das thema python durch"
Version 1:
"iCh NeHmE gErAdE iN dEr ScHuLe DaS tHeMa PyThOn DuRcH"
Version 2:
"iCh nEhMe gErAdE In dEr sChUlE DaS ThEmA PyThOn dUrCh"
Version 3:
"iCh nEhMe gErAdE iN dEr sChUlE dAs tHeMa pYtHoN dUrCh"
text = "ich nehme gerade in der schule das thema python durch"
Version 1:
"iCh NeHmE gErAdE iN dEr ScHuLe DaS tHeMa PyThOn DuRcH"
Version 2:
"iCh nEhMe gErAdE In dEr sChUlE DaS ThEmA PyThOn dUrCh"
Version 3:
"iCh nEhMe gErAdE iN dEr sChUlE dAs tHeMa pYtHoN dUrCh"
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Die version 3 meine ich!
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Es sit Version 3!
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Zählen? Modulo? Unsinn! Ich biete:
Code: Alles auswählen
from itertools import cycle
text = "ich nehme gerade in der schule das thema python durch und habe mich da etwas ausprobiert"
print("".join(f(c) for f, c in zip(cycle([str.lower, str.upper]), text)))
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Vielen dank. Das hat mir sehr geholfen!
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Das stimmt, beide Lösungen haben mir geholfen! Vielen Dank
@pythonkid: Denk aber bitte daran, wenn du Lösungen aus dem Internet verwendest die Quelle anzugeben. Außerdem ist es sinnvoll nur Code abzugeben den man auch selber versteht, denn der Lehrer könnte auch nachfragen was genau der Codeschnipsel macht.
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Das werde ich tun ich habe diesen Code jedoch sehr gut verstanden!!
Oder wenn man nicht für jeden Buchstaben die lower() bzw upper() Methode aufrufen will:__blackjack__ hat geschrieben: ↑Donnerstag 2. April 2020, 14:08 Zählen? Modulo? Unsinn! Ich biete:Code: Alles auswählen
from itertools import cycle text = "ich nehme gerade in der schule das thema python durch und habe mich da etwas ausprobiert" print("".join(f(c) for f, c in zip(cycle([str.lower, str.upper]), text)))
Code: Alles auswählen
from itertools import chain
text = "ich nehme gerade in der schule das thema python durch und habe mich da etwas ausprobiert"
result = chain.from_iterable(zip(text[::2].lower(), text[1::2].upper()))
print("".join(result))