In diesem Lernprogramm schreiben Sie Python-Programme, um häufig gestellte Fragen zu lösen String-Operationen.

Sie erfahren, wie Sie überprüfen, ob Python-Strings vorhanden sind Palindrome, Anagramme, und sind in der Titelfall.

Python-Strings: Ein kurzer Überblick

In Python sind Zeichenfolgen leistungsstarke integrierte Datentypen. Sie können eine Folge von Zeichen speichern.

Indizierung in Python-Strings: Wie alle Python-Iterables sind auch Strings nullindiziert. Die gültigen Indizes für einen String der Länge N sind also 0, 1, 2 bis N – 1.

Python-Strings

Python unterstützt auch die negative Indizierung, um auf Elemente vom Ende der Zeichenfolge zuzugreifen. -1 ist also der Index des letzten Zeichens in der Zeichenfolge, -2 ist der Index des vorletzten Zeichens in der Zeichenfolge und so weiter.

Unveränderlichkeit von Python-Strings: Außerdem sind Strings in Python unveränderlich, also Sie kann keine ändern Sie sie an Ort und Stelle. Sie können jedoch mehrere String-Methoden darauf aufrufen und Kopien von Strings mit dem gewünschten Ergebnis erhalten.

Nachdem wir nun die Grundlagen von Python-Strings überprüft haben, wollen wir damit fortfahren, einige einfache, aber interessante Probleme zu lösen.

Lasst uns beginnen.

Check if a Python String is a Palindrome

Aufgabenstellung: : Überprüfen Sie bei einem gegebenen Python-String, ob es sich um ein Palindrom handelt oder nicht.

Wenn ja, True zurückgeben; Andernfalls geben Sie False zurück.

Unser erstes Problem besteht also darin, zu überprüfen, ob eine bestimmte Zeichenfolge ein Palindrom ist oder nicht.

A Palindrom ist ein String, der sowohl von links nach rechts als auch von rechts nach links gelesen wird. Lassen Sie uns ein paar Beispiele auflisten: racecar, refer, level, madam, radar und so weiter.

Python-String-Palindrom

Hier sind die Schritte, um dieses Problem zu lösen:

  • Erhalten ein umgekehrte Kopie der Zeichenfolge und speichern Sie sie bei Bedarf in einer anderen Variablen.
  • Vergleichen Sie die Werte der ursprünglichen Zeichenfolge und der umgekehrten Zeichenfolge.
  • Wenn sie gleich sind, ist die Zeichenfolge ein Palindrom. Also zurück Wahr, und stoppen.
  • Wenn die ursprüngliche und die umgekehrte Kopie nicht gleich sind, ist die Zeichenfolge kein Palindrom. Wir sollten also zurückkehren falsch.

Die Schlüsseloperation besteht darin, eine umgekehrte Kopie der Zeichenfolge zu erhalten. In Python gibt es verschiedene Möglichkeiten, dies zu tun.

Wir werden jedoch zwei Ansätze durchgehen:

  • Die Saitenschneiden
  • Verwendung der rückgängig gemacht() Funktion und die beitreten() Methode

So kehren Sie einen Python-String mit Slicing um

Die Syntax <any_str>[start: stop: step] gibt einen Teil des Strings zurück <any_str> aus start bis, aber nicht inklusive stop, mit Schrittweite step.

  • Wenn Sie weglassen start, beginnt das Slice am Anfang der Zeichenfolge.
  • Wenn Sie die nicht angeben stop index erstreckt sich der Slice bis zum Ende des Strings.
  • Und negative Werte von step kann verwendet werden, um Slices ab dem Ende der Zeichenfolge zurückzugeben.

So <any_str>[::-1] gibt eine umgekehrte Kopie der Zeichenfolge zurück.

Die folgende Codezelle enthält die Definition der Funktion is_palindrome().

Es nimmt eine Zeichenfolge als Argument an und kehrt zurück True or False je nachdem, ob es ein Palindrom ist 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

▶️ Nachdem wir die Funktion definiert haben, können wir fortfahren und mit einer beliebigen gültigen Zeichenfolge als Argument aufrufen.

is_palindrome("racecar")
True

In der obigen Codezelle racecar ist ein Palindrom. Also die Funktion is_palindrome() Rückgabe True wie erwartet.

Versuchen Sie nun, die Funktion mit einer beliebigen Zeichenfolge aufzurufen, die kein Palindrom ist, z river.

is_palindrome("river")
False

Und wie Sie sehen können, kehrt es zurück False, welches ist richtig. ✅

Wie man einen Python-String mit reversed() und join() umkehrt

In Python können Sie die join() Methode zusammen mit der reversed() Funktion zum Umkehren einer Zeichenfolge.

  • Der reversed() Die Funktion gibt einen umgekehrten Iterator durch die Zeichen in der Zeichenfolge zurück.
  • Der join() -Methode kann dann verwendet werden, um diese Zeichen in umgekehrter Reihenfolge zu verbinden.

Mit der obigen Methode können Sie die neu schreiben is_palindrome() Funktion wie in der Codezelle unten.

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 Tasten is_palindrome() Funktion innen Listenverständnis um alle Palindrome aus einer längeren Liste von Zeichenfolgen zu sammeln.

str_list = ["refer","blue","level","12321","dragon"]

palindromes = [string for string in str_list if is_palindrome(string)]
print(palindromes)
# Output
['refer', 'level', '12321']

So funktioniert der obige Code:

  • Durchqueren str_list, Anruf is_palindrome() auf jeder Saite.
  • If is_palindrome() Rückgabe True, fügen Sie die Zeichenfolge hinzu palindromes Liste.

Wie Sie in der obigen Ausgabe sehen können, palindromes ist eine Liste aller palindromischen Zeichenketten in str_list.

Check if Two Python Strings are Anagrams

Eine weitere beliebte Frage, auf die Sie in Interviews stoßen können, ist zu überprüfen, ob ein Paar Saiten vorhanden sind oder nicht str1 und str2 sind Anagramme.

Zwei Saiten sollen es sein Anagramme wenn die Anzahl der Zeichen in den beiden Zeichenfolgen genau gleich ist. Das bedeutet, dass Sie eine der Zeichenfolgen erhalten können permutieren or Neuanordnung die Zeichen in der anderen Zeichenfolge.

Beispiele für Anagramme sind State-Taste, Save-Vase, Elbow-Below und so weiter.

Python-Strings-Anagramme

So suchen Sie mit Counter Object in Python nach Anagrammen

Eine einfache und intuitive Möglichkeit besteht darin, die Anzahl der Vorkommen jedes Zeichens in den beiden Zeichenfolgen zu berechnen. Und dann prüfen, ob die Zählungen gleich sind.

Dies geht umso einfacher mit der Counter Objekt aus dem itertools Modul. Das Zähler -Objekt gibt ein Python-Wörterbuch zurück: mit den Zeichen als Tasten und das entsprechende gilt als die Werte.

Betrachten Sie die Saiten "save" und "vase" wie unten gezeigt.

str1 = "save"
str2 = "vase"

Hier c1 und c2 sind Zählerobjekte, die die Zeichenanzahl der Zeichenfolgen enthalten str1 und str2 beziehungsweise.

from collections import Counter
c1 = Counter(str1)
c2 = Counter(str2)
print(c1)
print(c2)
c1 == c2

# Output
Counter({'s': 1, 'a': 1, 'v': 1, 'e': 1})
Counter({'v': 1, 'a': 1, 's': 1, 'e': 1})
True

c1 == c2 Rückgabe True as str1 und str2 sind Anagramme.

Mit dieser Logik können wir nun fortfahren und die Funktion definieren are_anagrams() mit zwei Parametern word1 und word2. Im Funktionskörper prüfen wir, ob Counter(word1) == Counter(word2).

def are_anagrams(word1, word2):
  if Counter(word1) ==  Counter(word2):
    return True
  else:
    return False

▶️ Rufen Sie zur Überprüfung an are_anagrams() mit str1, str2 als Argumente. Als str1 und str2 Anagramme sind („save“ und „vase“), kehrt die Funktion zurück True, welches ist richtig.

are_anagrams(str1, str2)
True

So suchen Sie mit sortierten Kopien von Zeichenfolgen nach Anagrammen

Es gibt eine andere Möglichkeit, dies zu tun.

Wenn zwei Zeichenfolgen Anagramme sind, dann ihre sortierte Exemplare sind gleich.

Also können wir die Funktion umschreiben are_anagrams() um zu überprüfen, ob die sortierte Version von str1 ist dasselbe wie die sortierte Kopie von str2. Wenn sie gleich sind, dann sind die beiden Zeichenketten Anagramme; sonst sind sie es nicht.

Unter Verwendung der obigen Methode zum Überprüfen der Gleichheit sortierter Kopien können wir die Funktion umschreiben are_anagrams() wie folgt.

def are_anagrams(word1, word2):
  if sorted(word1) ==  sorted(word2):
    return True
  else:
    return False

Lassen Sie uns nun einige Funktionsaufrufe durchführen.

  • Die Zeichenfolgen „elbow“ und „below“ sind Anagramme und die Funktion are_anagrams() Rückgabe True.
  • Und „state“ und „tasted“ sind keine Anagramme, und die Funktion kehrt zurück False.
are_anagrams("below","elbow")
True

are_anagrams("state","tasted")
False

Check if a Python String is in Title Case

Hier ist unsere letzte Frage für dieses Tutorial.

Aufgabenstellung: : Gegeben eine Zeichenkette: der Name einer Person – mit Vor- und Nachname.

Sie müssen prüfen, ob der Anfangsbuchstabe sowohl des Vor- als auch des Nachnamens groß geschrieben wird.

Diese Art der Groß- und Kleinschreibung, bei der der erste Buchstabe jedes Wortes großgeschrieben wird, wird als Großschreibung bezeichnet Titelfall.

Sie müssen also prüfen, ob der Name im Titel geschrieben ist:

1. Wenn ja, gib eine Meldung aus, dass die Formatierung in Groß-/Kleinschreibung erfolgt.

2. Anderenfalls gib eine Kopie der Zeichenfolge zurück, die im Titelfall formatiert ist

python-string-title-case
  • Python hat eine eingebaute String-Methode istitle(), die überprüft, ob eine Zeichenfolge im Titelfall ist.

<str>.istitle() Rückgabe True wenn die Saite <str> wird im Titelfall formatiert, andernfalls kehrt es zurück False.

  • Und die String-Methode von Python title() gibt eine Kopie der im Titel formatierten Zeichenfolge zurück.

Jetzt können Sie diese beiden Methoden verwenden, um das Problem zu lösen.

Definieren Sie eine Funktion check_titlecase() das akzeptiert name als Argument.

  • Sie können die anrufen istitle() -Methode für die Eingabezeichenfolge, um zu prüfen, ob sie in Groß-/Kleinschreibung formatiert ist.
  • If True, können Sie drucken, dass die Zeichenfolge bereits im Titelfall ist.
  • Andernfalls können Sie die anrufen title() -Methode und geben eine Kopie der Zeichenfolge im Titelfall zurück.

Die folgende Codezelle zeigt die Definition der check_titlecase() Funktion.

def check_titlecase(name):
  if name.istitle():
    print(f"'{name}' is already formatted in title case.")
  else:
    return name.title()

Lassen Sie uns jetzt anrufen check_titlecase() Methode mit einem Argument.

check_titlecase("jane smith")

# Output
Jane Smith

In der obigen Ausgabe können Sie sehen, dass sich die Zeichenfolge „Jane Smith“ jetzt in der Groß-/Kleinschreibung des Titels befindet.

▶️ Nehmen wir ein weiteres Beispiel.

check_titlecase("agatha Christie")

# Output
Agatha Christie

Rufen wir die Funktion dieses Mal mit einem Titel-Case-String auf.

check_titlecase("Grace Hopper")

# Output
'Grace Hopper' is already formatted in title case.

Wir werden benachrichtigt, dass die Zeichenfolge im Titelformat formatiert ist und die Funktion wie erwartet funktioniert.

Fazit

Lassen Sie uns nun die Probleme zusammenfassen, die wir bisher besprochen haben.

  • Um zu überprüfen, ob eine Zeichenfolge ein Palindrom ist, überprüfen Sie, ob die Zeichenfolge und ihre umgekehrte Version gleich sind. Sie können Stringslicing oder integrierte Methoden verwenden, um Strings umzukehren.
  • Um zu überprüfen, ob zwei Zeichenfolgen Anagramme sind, überprüfen Sie, ob ihre sortierten Kopien gleich sind. Und um einen String zu sortieren, verwenden Sie die eingebaute Funktion sorted().
  • Um zu überprüfen, ob ein Name im Titel geschrieben ist, verwenden Sie die Methode .isttitle() zum Überprüfen und die .Titel() -Methode, um eine Kopie der Zeichenfolge in Titelbuchstaben zu erhalten.

Ich hoffe, Ihnen hat dieses Tutorial zu Python-Strings gefallen. Als nächsten Schritt lernen Sie die Verwendung Listenverständnisse in Python oder lernen über die nicht gleich Operator bei Python.

Viel Spaß beim Lernen und Programmieren!🎉