Проверка анаграмм: Питоновский вызов

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Анаграмма - это слово или фраза, образованные путём перестановки букв другого слова или фразы. Например, "listen" - анаграмма "silent". В этом испытании вам будет предложено написать функцию, которая проверяет, являются ли две строки анаграммами друг друга.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/booleans("Booleans") python/BasicConceptsGroup -.-> python/comments("Comments") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") subgraph Lab Skills python/booleans -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/comments -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/conditional_statements -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/for_loops -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/tuples -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/function_definition -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/importing_modules -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/using_packages -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} python/standard_libraries -.-> lab-13666{{"Проверка анаграмм: Питоновский вызов"}} end

Анаграмма строки

Напишите функцию is_anagram(s1, s2), которая принимает две строки в качестве аргументов и возвращает True, если они являются анаграммами друг друга, и False в противном случае. Функция должна быть нечувствительной к регистру, игнорировать пробелы, знаки препинания и специальные символы.

Для решения этой проблемы вы можете следовать следующим шагам:

  1. Используйте str.isalnum(), чтобы отфильтровать неалфавитно-цифровые символы, и str.lower(), чтобы преобразовать каждый символ в нижний регистр.
  2. Используйте collections.Counter, чтобы подсчитать получившиеся символы для каждой строки и сравнить результаты.
from collections import Counter

def is_anagram(s1, s2):
  return Counter(
    c.lower() for c in s1 if c.isalnum()
  ) == Counter(
    c.lower() for c in s2 if c.isalnum()
  )
is_anagram('#anagram', 'Nag a ram!')  ## True

Резюме

В этом испытании вы узнали, как проверить, являются ли две строки анаграммами друг друга. Вы использовали str.isalnum(), чтобы отфильтровать неалфавитно-цифровые символы, str.lower(), чтобы преобразовать каждый символ в нижний регистр, и collections.Counter, чтобы подсчитать получившиеся символы для каждой строки и сравнить результаты.