Funktion mit jedem zweiten Buchstaben groß

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
phythonkid
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.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Jankie hat geschrieben: Donnerstag 2. April 2020, 12:38 Klar ersetzte ich einheitlich. Nur für jedes Wort einzelnt betrachtet.
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.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Dann definiere "Wort". Was definiert ein Wort und grenzt es vom Rest des Textes ab. Ist "Castrop-Rauxel" ein Wort oder zwei?
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

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)

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)
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

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"
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Die version 3 meine ich!
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Eben war es noch Version 2 was in meinem letzten Post Version 1 entspricht..
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Es sit Version 3!
Benutzeravatar
__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
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Vielen dank. Das hat mir sehr geholfen!
:)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@__backjack__: bis auf die doppelten statt einfachen Anführungszeichen, ist meine Lösung hier aufs Bit exakt gleich.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Das stimmt, beide Lösungen haben mir geholfen! Vielen Dank
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

@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.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Das werde ich tun ich habe diesen Code jedoch sehr gut verstanden!!
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

__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)))
Oder wenn man nicht für jeden Buchstaben die lower() bzw upper() Methode aufrufen will:

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))
EDIT: Wobei /me hier bereits eine sehr ähnliche Lösung genannt hatte.
Antworten