In diesem Lernprogramm werden Sie Python-Programme schreiben, um häufig gestellte Fragen zu String-Operationen zu lösen.
Sie lernen, wie Sie prüfen können, ob Python-Strings Palindrome oder Anagramme sind und ob sie in der Groß-/Kleinschreibung vorliegen.
Python Zeichenketten: Ein kurzer Überblick
In Python sind Strings leistungsfähige integrierte Datentypen. Sie können eine Folge von Zeichen speichern.
Indizierung in Python Strings: Wie alle Python Iterables sind auch Strings mit einem Null-Index versehen. Die gültigen Indizes für eine Zeichenkette der Länge N sind also 0, 1, 2 bis zu N - 1.

Python unterstützt auch die negative Indizierung, um auf Elemente am Ende der Zeichenkette zuzugreifen. So ist -1 der Index des letzten Zeichens in der Zeichenkette, -2 der Index des vorletzten Zeichens in der Zeichenkette und so weiter.
Unveränderlichkeit von Python-Strings: Darüber hinaus sind Strings in Python unveränderlich, d.h. Sie können Sie nicht an Ort und Stelle ändern. Sie können jedoch mehrere String-Methoden auf sie anwenden und erhalten so Kopien von Strings mit dem gewünschten Ergebnis.
Nachdem wir nun die Grundlagen von Python-Strings kennengelernt haben, wollen wir nun einige einfache, aber interessante Probleme lösen.
Fangen wir an.
Prüfen Sie, ob ein Python-String ein Palindrom ist
Problem: Prüfen Sie anhand einer Python-Zeichenkette, ob sie ein Palindrom ist oder nicht.
Wenn ja, geben Sie True zurück, sonst False.
Unser erstes Problem besteht auch darin, zu prüfen, ob eine gegebene Zeichenkette ein Palindrom ist oder nicht.
Ein Palindrom ist eine Zeichenkette, die sowohl von links nach rechts als auch von rechts nach links gleich gelesen wird. Lassen Sie uns ein paar Beispiele aufzählen: racecar, refer, level, madam, radar, und so weiter.

Hier sind die Schritte, um dieses Problem zu lösen:
- Besorgen Sie sich eine umgekehrte Kopie der Zeichenkette und speichern Sie sie in einer anderen Variablen, falls erforderlich.
- Vergleichen Sie die Werte der ursprünglichen Zeichenfolge und der umgekehrten Zeichenfolge.
- Wenn sie gleich sind, ist die Zeichenkette ein Palindrom. Geben Sie auch True zurück und hören Sie auf.
- Wenn die ursprüngliche und die umgekehrte Kopie nicht gleich sind, ist die Zeichenfolge kein Palindrom. Wir sollten auch False zurückgeben.
Die wichtigste Aufgabe besteht darin, eine umgekehrte Kopie der Zeichenkette zu erhalten. In Python gibt es einige verschiedene Möglichkeiten, dies zu tun.
Wir werden uns jedoch mit zwei Ansätzen beschäftigen:
- String-Slicing verwenden
- Verwendung der Funktion reversed() und der Methode join()
Umkehrung eines Python-Strings durch Slicing
Die Syntax <any_str>[start: stop: step]
gibt ein Slice der Zeichenkette <any_str>
von start
bis einschließlich stop
mit der Schrittgröße step
zurück.
- Wenn Sie
start
weglassen, beginnt der Ausschnitt am Anfang der Zeichenkette. - Wenn Sie den Index
stop
nicht angeben, erstreckt sich der Ausschnitt bis zum Ende der Zeichenkette. - Und negative Werte von
step
können verwendet werden, um Slices ab dem Ende der Zeichenkette zurückzugeben.
<any_str>[::-1]
gibt auch eine umgekehrte Kopie der Zeichenkette zurück.
Die folgende Codezelle enthält die Definition der Funktion is_palindrome()
.
Sie nimmt eine Zeichenkette als Argument entgegen und gibt True
oder False
zurück, je nachdem, ob es sich um ein Palindrom handelt oder nicht.
Hier haben wir String Slicing verwendet, um eine umgekehrte Kopie des Strings zu erhalten.
def is_palindrome(this_str):
rev_str = this_str[::-1]
if (this_str == rev_str):
return True
else:
return False
▶️ Nun, da wir die Funktion definiert haben, können wir sie mit einer beliebigen gültigen Zeichenkette als Argument aufrufen.
is_palindrome("rennwagen")
True
In der obigen Codezelle ist racecar
ein Palindrom. Die Funktion is_palindrome()
gibt auch wie erwartet True
zurück.
Versuchen Sie nun, die Funktion mit einer beliebigen Zeichenkette aufzurufen, die kein Palindrom ist, wie z.B. river
.
is_palindrome("Fluss")
False
Und wie Sie sehen können, gibt es die Funktion False
zurück, was korrekt ist. ✅
Wie man einen Python-String mit reversed() und join() umkehrt
In Python können Sie die Methode join()
zusammen mit der Funktion reversed()
verwenden, um eine Zeichenkette umzukehren.
- Die Funktion
reversed()
gibt einen umgekehrten Iterator durch die Zeichen der Zeichenkette zurück. - Die
join()
-Methode kann dann verwendet werden, um diese Zeichen in umgekehrter Reihenfolge zu verbinden.
Mithilfe der obigen Methode können Sie die Funktion is_palindrome()
wie in der folgenden Codezelle umschreiben.
def is_palindrome(this_str):
rev_str = ''.join(reversed(this_str))
if (this_str == rev_str):
return True
else:
return False
Sie können auch die Funktion is_palindrome()
innerhalb der Listenverarbeitung verwenden, um alle Palindrome aus einer längeren Liste von Zeichenketten zu sammeln.
str_list = ["refer", "blue", "level", "12321", "dragon"]
palindromes = [string for string in str_list if is_palindrome(string)]
print(palindromes)
# Ausgabe
['refer', 'level', '12321']
So funktioniert der obige Code:
- Durchlaufen Sie
str_list
, rufen Sieis_palindrome()
für jeden String auf. - Wenn
is_palindrome()
den WertTrue
liefert, fügen Sie die Zeichenkette zur Liste derPalindrome
hinzu.
Wie Sie in der obigen Ausgabe sehen können, ist palindromes
eine Liste aller palindromischen Zeichenketten in str_list
.
Prüfen Sie, ob zwei Python-Zeichenfolgen Anagramme sind
Eine weitere beliebte Frage, die Ihnen in Vorstellungsgesprächen begegnen kann, ist die, ob ein Paar von Zeichenketten str1
und str2
Anagramme sind oder nicht.
Zwei Zeichenketten gelten als Anagramme, wenn die Anzahl der Zeichen in den beiden Zeichenketten genau gleich ist. Das bedeutet, dass Sie eine der Zeichenketten durch Vertauschen oder Umordnen der Zeichen in der anderen Zeichenkette erhalten können.
Beispiele für Anagramme sind state-taste, save-vase, elbow-below, und so weiter.

Wie man mit dem Counter-Objekt in Python auf Anagramme prüft
Eine einfache und intuitive Methode besteht darin, die Anzahl der Vorkommen jedes Zeichens in den beiden Zeichenketten zu berechnen. Und dann zu prüfen, ob die Anzahlen gleich sind.
Das geht ganz einfach mit dem Counter-Objekt
aus dem Modul itertools
. Das Counter-Objekt gibt ein Python-Wörterbuch zurück: mit den Zeichen als Schlüsseln und den entsprechenden Zählungen als Werte.
Betrachten Sie die Zeichenketten "save"
und "vase"
wie unten gezeigt.
str1 = "speichern"
str2 = "vase"
Hier sind c1
und c2
Counter-Objekte, die die Anzahl der Zeichen der Strings str1
bzw. str2
enthalten.
from collections import Counter
c1 = Counter(str1)
c2 = Counter(str2)
print(c1)
print(c2)
c1 == c2
# Ausgabe
Counter({'s': 1, 'a': 1, 'v': 1, 'e': 1})
Counter({'v': 1, 'a': 1, 's': 1, 'e': 1})
True
c1 == c2
Es gibt True
zurück, da str1
und str2
Anagramme sind.
Mit dieser Logik können wir nun die Funktion are_anagrams()
mit zwei Parametern word1
und word2
definieren. Im Hauptteil der Funktion prüfen wir, ob Zähler(wort1) == Zähler(wort2)
.
def are_anagrams(wort1, wort2):
if Zähler(wort1) == Zähler(wort2):
return True
else:
return False
▶️ Um dies zu überprüfen, rufen Sie are_anagrams()
mit str1
, str2
als Argumente auf. Da str1
und str2
Anagramme sind ("save" und "vase"), gibt die Funktion True
zurück, was korrekt ist.
are_anagrams(str1, str2)
True
Überprüfung auf Anagramme mit sortierten Kopien von Zeichenketten
Es gibt noch eine andere Möglichkeit, wie Sie dies tun können.
Wenn zwei Zeichenketten Anagramme sind, dann sind ihre sortierte Kopien gleich.
Wir können auch die Funktion are_anagrams()
so umschreiben, dass sie prüft, ob die sortierte Version von str1
mit der sortierten Kopie von str2
identisch ist. Wenn sie gleich sind, dann sind die beiden Zeichenketten Anagramme; andernfalls sind sie es nicht.
Mit der obigen Methode zur Überprüfung der Gleichheit von sortierten Kopien können wir die Funktion are_anagrams()
wie folgt umschreiben.
def are_anagrams(word1, word2):
if sortiert(word1) == sortiert(word2):
return True
else:
return False
Lassen Sie uns nun ein paar Funktionsaufrufe machen.
- Die Zeichenketten "elbow" und "below" sind Anagramme und die Funktion
are_anagrams()
Es gibtTrue
zurück. - Und "state" und "tasted" sind keine Anagramme, und die Funktion gibt
False
zurück.
are_anagrams("unten", "elbow")
True
are_anagrams("state", "tasted")
False
Prüfen Sie, ob ein Python-String in Title Case ist
Hier ist unsere letzte Frage für dieses Tutorial.
Problem: Gegeben ist eine Zeichenkette: der Name einer Person - mit Vor- und Nachnamen.
Sie müssen prüfen, ob der erste Buchstabe sowohl des Vor- als auch des Nachnamens großgeschrieben wird.
Diese Art der Großschreibung, bei der der erste Buchstabe eines jeden Wortes groß geschrieben wird, nennt man Titelfall.
Sie müssen auch überprüfen, ob der Name in Großbuchstaben geschrieben ist:
1. Wenn ja, geben Sie eine Meldung aus, dass die Formatierung in Groß- und Kleinschreibung erfolgt.
2. Andernfalls geben Sie eine Kopie der Zeichenkette zurück, die in der Groß-/Kleinschreibung formatiert ist.

- Python verfügt über eine eingebaute String-Methode
istitle()
, die prüft, ob eine Zeichenkette in der Groß-/Kleinschreibung formatiert ist.
<str>.istitle()
Es gibtTrue
zurück, wenn die Zeichenkette<str>
in der Groß-/Kleinschreibung formatiert ist, andernfallsFalse
.
- Und Pythons String-Methode
title()
gibt eine Kopie des Strings zurück, der in der Groß-/Kleinschreibung formatiert ist.
Jetzt können Sie auch diese beiden Methoden verwenden, um das Problem zu lösen.
Definieren Sie eine Funktion check_titlecase()
, sterben name
als Argument akzeptiert.
- Sie können die Methode
istitle()
auf der Eingabezeichenkette aufrufen, um zu prüfen, ob sie in der Groß-/Kleinschreibung formatiert ist. - Wenn
True
, können Sie ausgeben, dass die Zeichenkette bereits in title case formatiert ist. - Andernfalls können Sie die Methode
title()
aufrufen und eine Kopie der Zeichenkette in der Groß-/Kleinschreibung zurückgeben.
Die folgende Codezelle zeigt die Definition der Funktion check_titlecase()
.
def check_titlecase(name):
if name.istitle():
print(f"'{Name}' ist bereits in Großbuchstaben formatiert.")
else:
return name.title()
Lassen Sie uns nun die Methode check_titlecase()
mit einem Argument aufrufen.
check_titlecase("jane smith")
# Ausgabe
Jane Smith
In der obigen Ausgabe können Sie sehen, dass die Zeichenkette "Jane Smith" nun in der Groß- und Kleinschreibung des Titels vorliegt.
▶️ Lassen Sie uns ein anderes Beispiel nehmen.
check_titlecase("agatha Christie")
# Ausgabe
Agatha Christie
Diesmal rufen wir die Funktion mit einer Zeichenkette in Titelform auf.
check_titlecase("Grace Hopper")
# Ausgabe
'Grace Hopper' ist bereits in Großbuchstaben formatiert.
Wir werden benachrichtigt, dass die Zeichenkette in der Groß- und Kleinschreibung des Titels formatiert ist, und die Funktion funktioniert wie erwartet.
Schlussfolgerung 👩🏫
Fassen wir nun die Probleme zusammen, die wir bisher besprochen haben.
- Um zu prüfen, ob eine Zeichenkette ein Palindrom ist, prüfen Sie, ob die Zeichenkette und ihre umgekehrte Version gleich sind. Sie können String Slicing oder integrierte Methoden verwenden, um Strings umzukehren.
- Um zu prüfen, ob zwei Zeichenketten Anagramme sind, prüfen Sie, ob ihre sortierten Kopien gleich sind. Und um eine Zeichenkette zu sortieren, verwenden Sie die eingebaute Funktion sortiert().
- Um zu überprüfen, ob ein Name in Großbuchstaben geschrieben ist, verwenden Sie die Methode .istitle() zur Überprüfung und die Methode .title(), um eine Kopie der Zeichenkette in Großbuchstaben zu erhalten.
Ich hoffe, dass Ihnen dieser Lehrgang über Python-Strings gefallen hat. In einem nächsten Schritt lernen Sie, wie Sie Listenkomplexe in Python verwenden können oder lernen Sie den Operator nicht gleich in Python kennen.
Viel Spaß beim Lernen und Programmieren!🎉.