Python における回文検出

PythonPythonBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

回文とは、前向きと後ろ向きで同じように読める単語、フレーズ、数字、またはその他の文字の列です。たとえば、「racecar」は回文です。なぜなら、この単語を逆にすると、依然として「racecar」と書かれているからです。このチャレンジでは、与えられた文字列が回文かどうかをチェックする関数を書きます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/BasicConceptsGroup -.-> python/booleans("Booleans") python/BasicConceptsGroup -.-> python/comments("Comments") python/DataStructuresGroup -.-> python/lists("Lists") 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-13704{{"Python における回文検出"}} python/comments -.-> lab-13704{{"Python における回文検出"}} python/lists -.-> lab-13704{{"Python における回文検出"}} python/tuples -.-> lab-13704{{"Python における回文検出"}} python/function_definition -.-> lab-13704{{"Python における回文検出"}} python/importing_modules -.-> lab-13704{{"Python における回文検出"}} python/using_packages -.-> lab-13704{{"Python における回文検出"}} python/standard_libraries -.-> lab-13704{{"Python における回文検出"}} end

回文

文字列sを唯一のパラメータとして受け取り、sが回文の場合にはTrueを返し、それ以外の場合にはFalseを返す関数palindrome(s)を書きます。回文をチェックする際に、関数は大文字小文字の区別を無視し、英数字以外の文字も無視する必要があります。

この問題を解くには、次の手順を辿ることができます。

  1. str.lower()を使用して文字列を小文字に変換します。
  2. re.sub()を使用して文字列からすべての英数字以外の文字を削除します。
  3. 結果の文字列をスライス表記を使用してその逆と比較します。
from re import sub

def palindrome(s):
  s = sub('[\W_]', '', s.lower())
  return s == s[::-1]
palindrome('taco cat') ## True

まとめ

このチャレンジでは、与えられた文字列が回文かどうかをチェックする方法を学びました。文字列を小文字に変換し、英数字以外の文字を削除するためにstr.lower()re.sub()を使用し、その後、スライス表記を使って結果の文字列をその逆と比較しました。