Pythonで文字列が回文かどうかを判定する方法
Pythonで回文判定を行う方法
文字列が回文(前から読んでも後ろから読んでも同じになる文字列)であるかどうかを確認するには、Pythonの標準ライブラリに含まれる reversed() 関数を利用するのが便利です。この関数は逆順のイテレータオブジェクトを返し、それを list() でリストに変換することができます。
手順1:reversed()で文字列を逆順にする
まず、対象となる文字列を reversed() 関数に渡し、結果をリストとして取得します。
>>> str1='malayalam' >>> l1=list(reversed(str1)) >>> l1 ['m', 'a', 'l', 'a', 'y', 'a', 'l', 'a', 'm']
手順2:join()メソッドで文字列に結合する
次に、join() メソッドを使って、リスト内のすべての文字を1つの文字列に結合します。
>>> str2=''.join(str(x) for x in l1)
手順3:元の文字列と比較する
最後に、元の文字列 str1 と逆順にした文字列 str2 を比較します。両者が完全に一致していれば、その文字列は回文であると判断できます。
>>> if str1==str2:
print ('palindrome')
else:
print ('not palindrome')補足:スライスを使ったより簡潔な方法
Pythonでは、スライス記法 [::-1] を使うことで、上記の手順をもっとシンプルに書くこともできます。
>>> if str1 == str1[::-1]:
print('palindrome')
else:
print('not palindrome')このように、reversed() 関数と join() メソッドを組み合わせる方法でも、スライスを使う方法でも、簡単に回文判定を実装できます。用途や可読性に応じて使い分けるとよいでしょう。
-
Pythonでファイルが存在するかどうかを確認する方法
os.access()によるファイルの存在確認と権限チェックPythonでは、os.access(path, mode)関数を使うことで、ファイルの存在確認だけでなく、読み取り・書き込み・実行といったアクセス権限の有無も同時にチェックできます。引数modeには以下の定数を指定します。os.F_OK: ファイルが存在するかどうかos.R_OK: 読み取り権限があるかどうかos.W_OK: 書き込み権限があるかどうかos.X_OK: 実行権限があるかどうか使用例>>> import os>>> os.access(my_file, os.F_OK) # ファイ
-
Pythonで文字列が英数字のみかどうかを判定する方法【isalnum()と正規表現】
Pythonでは、文字列が英数字(アルファベットと数字)のみで構成されているかどうかを簡単に判定できます。主な方法は2つあります。文字列クラスに組み込まれている isalnum() メソッドを使う方法と、正規表現を使う方法です。 isalnum()メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、文字列が英数字のみで構成されている場合に True を、記号などが含まれる場合には False を返します。 >>> 123abc.isalnum() True >>>