Dans ce didacticiel, vous allez écrire des programmes Python pour résoudre les questions fréquemment posées sur opérations de chaîne.

Vous apprendrez à vérifier si les chaînes Python sont palindrome, anagrammes, et sont dans le cas de titre.

Chaînes Python : un examen rapide

En Python, les chaînes sont de puissants types de données intégrés. Ils peuvent stocker une séquence de caractères.

Indexation dans les chaînes Python : Comme tous les itérables Python, les chaînes sont également indexées à zéro. Ainsi, les indices valides pour une chaîne de longueur N sont 0, 1, 2 jusqu'à N - 1.

chaînes python

Python prend également en charge l'indexation négative pour accéder aux éléments à partir de la fin de la chaîne. Donc -1 est l'index du dernier caractère de la chaîne, -2 est l'index de l'avant-dernier caractère de la chaîne, et ainsi de suite.

Immuabilité des chaînes Python: De plus, les chaînes en Python sont immuables, vous ne peut pas les modifier en place. Cependant, vous pouvez appeler plusieurs méthodes de chaîne sur celles-ci et obtenir des copies de chaînes avec le résultat souhaité.

Maintenant que nous avons passé en revue les bases des chaînes Python, passons à la résolution de problèmes simples mais intéressants.

Commençons.

Check if a Python String is a Palindrome

Problème: étant donné une chaîne Python, vérifiez s'il s'agit ou non d'un palindrome.

Si oui, retournez True ; sinon, renvoie False.

Donc notre premier problème est de vérifier si oui ou non une chaîne donnée est un palindrome.

A palindrome est une chaîne qui se lit de la même manière de gauche à droite et de droite à gauche. Citons quelques exemples : voiture de course, référence, niveau, madame, radar, etc.

python-chaîne-palindrome

Voici les étapes pour résoudre ce problème :

  • Obtenir un copie inversée de la chaîne et stockez-la dans une autre variable, si nécessaire.
  • Comparez les valeurs de la chaîne d'origine et de la chaîne inversée.
  • S'ils sont égaux, la chaîne est un palindrome. Alors reviens Les véritables, et arrêtez.
  • Si les copies originales et inversées ne sont pas égales, la chaîne n'est pas un palindrome. Alors il faut revenir Faux.

L'opération clé consiste à obtenir une copie inversée de la chaîne. En Python, il existe plusieurs façons de procéder.

Cependant, nous passerons en revue deux approches :

  • En utilisant tranchage de ficelle
  • En utilisant l' renversé() fonction et le joindre() méthode

Comment inverser une chaîne Python à l'aide du découpage

La syntaxe <any_str>[start: stop: step] renvoie une tranche de la chaîne <any_str> de start jusqu'à mais non compris stop, avec pas de progression step.

  • Si vous omettez start, la tranche commence au début de la chaîne.
  • Si vous ne spécifiez pas le stop index, la tranche s'étend jusqu'à la fin de la chaîne.
  • Et les valeurs négatives de step peut être utilisé pour renvoyer des tranches à partir de la fin de la chaîne.

So <any_str>[::-1] renvoie une copie inversée de la chaîne.

La cellule de code suivante contient la définition de la fonction is_palindrome().

Il prend une chaîne comme argument et renvoie True or False selon qu'il s'agit ou non d'un palindrome.

Ici, nous avons utilisé le découpage de chaîne pour obtenir une copie inversée de la chaîne.

def is_palindrome(this_str):
  rev_str = this_str[::-1]
  if (this_str == rev_str):
    return True
  else:
    return False

▶️ Maintenant que nous avons défini la fonction, nous pouvons continuer et appeler avec n'importe quelle chaîne valide comme argument.

is_palindrome("racecar")
True

Dans la cellule de code ci-dessus, racecar est un palindrome. Donc la fonction is_palindrome() Retours True comme prévu.

Maintenant, essayez d'appeler la fonction avec n'importe quelle chaîne qui n'est pas un palindrome, comme river.

is_palindrome("river")
False

Et comme vous pouvez le voir, il revient False, qui est correct. ✅

Comment inverser une chaîne Python en utilisant reversed() et join()

En Python, vous pouvez utiliser le join() méthode avec la reversed() fonction pour inverser une chaîne.

  • L' reversed() La fonction renvoie un itérateur inverse à travers les caractères de la chaîne.
  • L' join() La méthode peut ensuite être utilisée pour joindre ces caractères dans l'ordre inverse.

En utilisant la méthode ci-dessus, vous pouvez réécrire le is_palindrome() fonctionnent comme dans la cellule de code ci-dessous.

def is_palindrome(this_str):
  rev_str = ''.join(reversed(this_str))
  if (this_str == rev_str):
    return True
  else:
    return False

Vous pouvez également utiliser la is_palindrome() fonction à l'intérieur compréhension de la liste pour collecter tous les palindromes à partir d'une longue liste de chaînes.

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

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

Voici comment fonctionne le code ci-dessus :

  • Traverser str_list, appel is_palindrome() sur chaque corde.
  • If is_palindrome() Retours True, ajoutez la chaîne au palindromes liste.

Comme vous pouvez le voir dans la sortie ci-dessus, palindromes est une liste de toutes les chaînes palindromiques dans str_list.

Check if Two Python Strings are Anagrams

Une autre question populaire que vous pouvez rencontrer lors des entretiens est de vérifier si oui ou non une paire de cordes str1 str2 sont des anagrammes.

On dit que deux cordes sont anagrammes si le nombre de caractères dans les deux chaînes est exactement le même. Cela signifie que vous pouvez obtenir l'une des chaînes en permuter or réarranger les caractères de l'autre chaîne.

Des exemples d'anagrammes incluent l'état-goût, le vase de sauvegarde, le coude en dessous, etc.

python-strings-anagrammes

Comment vérifier les anagrammes à l'aide de l'objet compteur en Python

Un moyen simple et intuitif consiste à calculer le nombre d'occurrences de chaque caractère dans les deux chaînes. Et puis vérifiez si les comptes sont égaux.

Cela peut être fait d'autant plus facilement en utilisant le Counter objet du itertools module. la Compteur renvoie un dictionnaire Python : avec les caractères comme clés et le correspondant compte comme le valeurs.

Considérez les cordes "save" "vase" comme indiqué ci-dessous.

str1 = "save"
str2 = "vase"

Ici, c1 c2 sont des compteurs contenant le nombre de caractères des chaînes str1 str2 respectivement.

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 Retours True as str1 str2 sont des anagrammes.

En utilisant cette logique, nous pouvons maintenant continuer et définir la fonction are_anagrams() avec deux paramètres word1 word2. Dans le corps de la fonction, nous vérifions si Counter(word1) == Counter(word2).

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

▶️ Pour vérifier, appelez are_anagrams() avec str1, str2 comme arguments. Comme str1 str2 sont des anagrammes ("save" et "vase"), la fonction renvoie True, qui est correct.

are_anagrams(str1, str2)
True

Comment vérifier les anagrammes à l'aide de copies triées de chaînes

Il existe une autre façon de procéder.

Si deux chaînes sont des anagrammes, alors leur copies triées sont égaux.

On peut donc réécrire la fonction are_anagrams() pour vérifier si la version triée de str1 est identique à la copie triée de str2. S'ils sont égaux, alors les deux chaînes sont des anagrammes ; sinon, ils ne le sont pas.

En utilisant la méthode ci-dessus pour vérifier l'égalité des copies triées, nous pouvons réécrire la fonction are_anagrams() comme suit.

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

Faisons maintenant quelques appels de fonction.

  • Les chaînes "coude" et "ci-dessous" sont des anagrammes et la fonction are_anagrams() Retours True.
  • Et "état" et "goûté" ne sont pas des anagrammes, et la fonction renvoie False.
are_anagrams("below","elbow")
True

are_anagrams("state","tasted")
False

Check if a Python String is in Title Case

Voici notre dernière question pour ce tutoriel.

Problème: Étant donné une chaîne : le nom d'une personne, avec son prénom et son nom.

Vous devez vérifier si la première lettre du prénom et du nom de famille est en majuscule.

Ce type de casse où la première lettre de chaque mot est en majuscule est appelé cas de titre.

Vous devez donc vérifier si le nom est dans la casse du titre :

1. Si oui, affichez un message indiquant que le formatage est en casse de titre.

2. Sinon, renvoyez une copie de la chaîne formatée dans la casse du titre

python-string-title-case
  • Python a une méthode de chaîne intégrée istitle(), qui vérifie si une chaîne est dans la casse du titre.

<str>.istitle() Retours True si la chaîne <str> est formaté dans la casse du titre, sinon il renvoie False.

  • Et la méthode de chaîne de Python title() renvoie une copie de la chaîne formatée dans la casse du titre.

Alors maintenant, vous pouvez utiliser ces deux méthodes pour résoudre le problème.

Définir une fonction check_titlecase() qui accepte name comme argument.

  • Vous pouvez appeler le istitle() méthode sur la chaîne d'entrée pour vérifier si elle est formatée en casse de titre.
  • If True, vous pouvez imprimer que la chaîne est déjà en casse de titre.
  • Sinon, vous pouvez appeler le title() et renvoie une copie de la chaîne dans la casse du titre.

La cellule de code suivante montre la définition du check_titlecase() la fonction.

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

Appelons maintenant le check_titlecase() méthode avec un argument.

check_titlecase("jane smith")

# Output
Jane Smith

Dans la sortie ci-dessus, vous pouvez voir que la chaîne "Jane Smith" est maintenant dans la casse du titre.

▶️ Prenons un autre exemple.

check_titlecase("agatha Christie")

# Output
Agatha Christie

Cette fois, appelons la fonction avec une chaîne en casse de titre.

check_titlecase("Grace Hopper")

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

Nous sommes informés que la chaîne est formatée dans la casse du titre et que la fonction fonctionne comme prévu.

Conclusion

Résumons maintenant les problèmes dont nous avons discuté jusqu'ici.

  • Pour vérifier si une chaîne est un palindrome, vérifiez si la chaîne et sa version inversée sont égales. Vous pouvez utiliser le découpage de chaînes ou des méthodes intégrées pour inverser les chaînes.
  • Pour vérifier si deux chaînes sont des anagrammes, vérifiez si leurs copies triées sont égales. Et pour trier une chaîne, utilisez la fonction intégrée triée().
  • Pour vérifier si un nom est en casse de titre, utilisez la méthode .istitle() pour vérifier et la .Titre() méthode pour obtenir une copie en casse de titre de la chaîne.

J'espère que vous avez apprécié ce tutoriel sur les chaînes Python. À l'étape suivante, apprenez à utiliser lister les compréhensions en Python ou en apprendre davantage sur le opérateur non égal en Python.

Bon apprentissage et codage !🎉