Hallo,
ich nehme gerade in der Schule das Thema Phython durch und habe mich da etwas ausprobiert, sodas ich die Grundlagen jetzt kann... Ich muss aber nun ein Programm programmieren, wo jeder zweite Buchstabe eines kurzen Textes groß geschrieben wird und der rest klein.
Es wäre toll wenn jemand mir dabei helfen könnte oder einen Ansatz sagen könnte!
Liebe Grüße
Funktion mit jedem zweiten Buchstaben groß
Die Methode zum alles-gross-machen einen Strings ist ".upper()"
Code: Alles auswählen
s = "hallo"
print(s.upper())
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Vielen Dank!
Weißt du auch wie man jetzt jeden zweiten Buchstaben nur groß macht?
Weißt du auch wie man jetzt jeden zweiten Buchstaben nur groß macht?
Natuerlich weiss ich das. Aber wenn ich dir das verrate, dann ist das ja meine Loesung, und nicht deine. Was ich dir verraten kann: es gibt dafuer keine eingebaute Funktion, das musst du schon selbst programmieren. Du musst dazu auf jeden einzelnen Buchstaben nacheinander zugreifen, und du musst wissen, ob das gerade eine gerade Zahl ist, bei der du zugreifst. Dazu brauchst du
- eine for-schleife
- eine if-abfrage
- den Modulo-Operator, um zu pruefen ob eine Zahl durch zwei teilbar ist.
- eine for-schleife
- eine if-abfrage
- den Modulo-Operator, um zu pruefen ob eine Zahl durch zwei teilbar ist.
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Dank. Ich verstehe aber leider noch nicht wiso isch einen Modulo-Operator brauche um zu prüfen, ob die Zahl durch zwei teilbar ist. Es ist ja ein Satz und keien Zahlen. Oder verstehe ich da etwas falsch? Ich versuche ja jeden zweiten Buchstaben groß zu machen.
Und wie willst du sonst feststellen ob du bei einem Zeichen an einer geraden Position (2, 4, 6, ...) bist? Das ließe sich vielleicht noch mit einem Flag lösen, aber spätestens wenn die nächste Aufgabe lautet "mit jedem dritten Buchstaben", dann willst du den Modulo-Operator haben.
Wenn du deinem Lehrer die folgende Variante tatsächlich erklären kannst, dann hast du dir die Lösung verdient.
Wenn du deinem Lehrer die folgende Variante tatsächlich erklären kannst, dann hast du dir die Lösung verdient.
Code: Alles auswählen
''.join(itertools.chain(*(zip(text[::2].lower(), text[1::2].upper()))))
Zuletzt geändert von /me am Donnerstag 2. April 2020, 12:29, insgesamt 1-mal geändert.
Ja. Jeden ZWEITEN. Zwei. Das ist eine Zahl. Wenn du also etwas jedes zweite mal machen willst, dann musst du zaehlen wie oft du es gemacht hast, und dann eben enscheiden, ob jetzt gerade jedes zweite mal ist. Es gibt auch andere, weniger elegante Wege, du kannst dir stattdessen merken, wie lange es her ist, dass du was gemacht hast, und es dann halt machen wenn wieder Zeit dafuer ist. Und deine Zaehlung von vorne beginnen. Aber das ist im Grunde wie modulo rechnen.
Es gibt verschiedene Möglichkeiten, und eine davon, ist ganz direkt jeden Buchstaben zu nehmen und zu entscheiden ob der an einer geraden Position klein oder einer ungeraden Position groß gemacht wird. Und dazu ist der Modulo-Operator ganz nützlich.
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
vielen dank. ich probiere es mal aus
Wenn du als Beispiel ""ich nehme gerade in der schule das thema python durch und habe mich da etwas ausprobiert" hast, soll der Output dann so aussehen: "iCh nEhMe gErAdE iN dEr sChUlE dAs tHeMa pYtHoN dUrCh" oder "iCh NeHmE gErAdE iN dEr ScHuLe DaS tHeMa PyThOn DuRcH"?
Also jedes zweite Zeichen im String oder nur auf jedes Wort einzelnt betrachtet?
Also jedes zweite Zeichen im String oder nur auf jedes Wort einzelnt betrachtet?
-
- User
- Beiträge: 31
- Registriert: Donnerstag 2. April 2020, 11:08
Ja! So soll das sein!
Du verarscht uns jetzt, oder? Die Frage war "Variante 1 oder Variante 2" und du antwortest mit "Ja"? Du kannst doch hier keine boolsche Logik anwenden.
Klar ersetzte ich einheitlich. Nur für jedes Wort einzelnt betrachtet.
Ich habe mit RegEx jedes Wort in eine Liste gepackt und dann für jedes Wort in der Liste jedes zweite Zeichen groß geschreiben. Dann mit " ".join habe ich die Liste wieder zusammengefügt zu einem String.
Ich habe mit RegEx jedes Wort in eine Liste gepackt und dann für jedes Wort in der Liste jedes zweite Zeichen groß geschreiben. Dann mit " ".join habe ich die Liste wieder zusammengefügt zu einem String.
Zuletzt geändert von Jankie am Donnerstag 2. April 2020, 12:41, insgesamt 1-mal geändert.
-
- 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"