Pythonで文字列・数値が回文(パリンドローム)かどうかを判定する方法【スライス活用】
本記事では、入力された文字列や数値が回文(パリンドローム)であるかどうかを判定するPythonプログラムの解決策とアプローチについて解説します。
問題の概要
文字列が入力として与えられたとき、それが回文であるかどうかを判定するPython関数を作成する必要があります。
回文とは、文字列を逆から読んでも元の文字列と完全に一致するものを指します。たとえば「78287」や「しんぶんし」などが代表的な例です。
解決のアプローチ
回文判定は、主に以下の2つの方法で実現できます。
- スライスによる文字列の反転
- 負のインデックスを使った比較
本記事では、このうちスライスを使った文字列の反転方法を中心に解説します。
スライスによる文字列の反転
Pythonで文字列を逆順にするには、次のようなステートメントを記述します。
Str[ : : -1 ]
この記法では、開始位置と終了位置のパラメータを省略し、ステップ値として -1 を指定しています。これにより、文字列全体が末尾から先頭へと1文字ずつ走査され、結果として逆順の文字列が得られます。
実装例
num = input('Enter any number : ')
try:
val = int(num)
if num == str(num)[::-1]:
print('The given number is PALINDROME')
else:
print('The given number is NOT a palindrome')
except ValueError:
print("That's not a valid number, Try Again !")
実行結果
Enter any number : 78287 The given number is PALINDROME
コードのポイント
このプログラムでは、例外処理(try-except)を使用して、入力された文字列が数値として有効であることを確認しています。int(num) で変換できない文字が含まれている場合は ValueError が発生し、エラーメッセージを表示して再入力を促す仕組みです。
また、num == str(num)[::-1] という比較により、入力された数値を文字列として反転したものと元の文字列が一致するかどうかをチェックすることで、回文判定を実現しています。
まとめ
本記事では、Pythonのスライス機能を活用して、文字列(数値)が回文であるかどうかを判定する方法を学びました。スライスのステップ値に -1 を指定するだけで簡単に文字列を反転できるため、回文判定以外にもさまざまな場面で応用できる便利なテクニックです。ぜひ実際のコードで試してみてください。
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列
-
Pythonで与えられた数値がフィボナッチ数かどうかを判定する方法
本記事では、与えられた数値がフィボナッチ数であるかどうかを判定する問題の解決策について解説します。 問題の定義 ある数値 n が与えられたとき、その数値がフィボナッチ数であるかどうかを判定します。 第 n 項のフィボナッチ数は、直前の2つのフィボナッチ数の和として定義されることは広く知られています。しかし、フィボナッチ数列には漸化式以外にも興味深い数学的性質があります。 フィボナッチ数の判定条件 ある数値 n がフィボナッチ数であるのは、「5×n² + 4」または「5×n² − 4」のいずれかが完全平方数であるとき、かつそのときに限る この性質を利用すれば、フィボナッチ数列を実際に生成しなくて