Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでの回文:数値を確認する方法は回文ですか?


回文とは何ですか?

回文は、左から右または右から左に読んだときに同じ文字列です。言い換えれば、回文文字列は、その逆が元の文字列と等しいものです。

たとえば、市民、マダムは回文です。

猫は回文ではありません。その逆はtacであるため、元の文字列(cat)とは異なります。

入力文字列が回文であるかどうかを確認するプログラムを作成します。

方法1-文字列の逆を検索

  • プログラムで必要な主なことは、文字列の逆を見つけることです。

  • 逆は、文字列を逆にする方法のいずれかを使用して見つけることができます。単純なスライス方法を使用して文字列を反転します。組み込みの‘’ .join(reversed())も使用できます。文字列を逆にする方法は他にもありますが、簡単な方法を使用します。

  • 反転した文字列を元の文字列と比較します。

  • 両方の文字列が等しい場合はtrueを返し、そうでない場合はfalseを返します。

def isPalindrome(s):
   rev=s[::-1]
   if(rev==s):
      return True
   return False
print("Enter a string")
st=input()
print(isPalindrome(st))

出力

Enter a string
madam
True

方法2-文字列の逆を見つけずに

アイデアは、文字列の最初と最後のインデックスの文字が等しくなくなるまで継続的に比較することです。

文字列の逆を見つけることなく、2つの例を見てみましょう-

文字列値"madam":

  • 等しい最初と最後の文字を比較し、さらに再び等しい最後から2番目と2番目の文字を比較します。最後に、1文字しか残されていません。したがって、文字列は回文です。

文字列値"reader":

  • 最後から2番目の要素と最後から2番目の要素を比較するまで文字は同じです。

    最後から3番目と3番目の文字を比較すると、それらは等しくないため、回文ではありません。

  • このアイデアは、再帰または2つのポインターを使用して実装できます。 2つのポインタを使用して実装します。開始ポインタを0から開始し、終了ポインタを最後のインデックスから開始します。比較を開始し、文字が等しい場合は、開始ポインターをインクリメントし、終了ポインターをデクリメントします(したがって、最後から2番目と2番目の文字に移動します)。

  • いつfalseを返しますか?ポインタのセットの文字が等しくないことがわかった場合、それ以上のインデックスを探す必要はなく、Falseを返すことができます。

  • いつTrueを返しますか?他の場合、文字列が回文である場合、両方のポインターが等しくなるか(1文字だけがチェックされる)、または開始ポインターが終了ポインターを超えると(すべての文字がチェックされる)、Trueを返します。したがってtrueを返します。

def isPalindrome(s):
   rev=s[::-1]
   if(rev==s):
      return True
   return False
print("Enter a string")
st=input()
print(isPalindrome(st))

出力

Enter a string
reader
False
>>>
Enter a string
madam
True

  1. 与えられた番号がPythonプログラムでフィボナッチ数であるかどうかを確認するにはどうすればよいですか?

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数nが与えられたら、nがフィボナッチ数であるかどうかを確認します n番目のフィボナッチ数は前の2つのフィボナッチ数の合計であることは誰もが知っています。しかし、それらは漸化式以外の興味深い関係も提供します。 (5 * n2 + 4)または(5 * n2 – 4)が完全な正方形である場合に限り、数値は本質的にフィボナッチです。 このプロパティを使用して、数値がフィボナッチであるかどうかを確認します。 では、Pythonスクリプトの実装を見てみましょう- 例 import math # if x is p

  2. Pythonで文字列にアルファベットまたは数字が含まれているかどうかを確認するにはどうすればよいですか?

    Python Stringクラスには、文字列に対して呼び出すことができるisalnum()というメソッドがあり、文字列が英数字のみで構成されているかどうかを通知します。次の方法で呼び出すことができます: print( '123abc'.isalnum()) 出力 True print('123#$%abc'.isalnum()) 出力 False 同じ結果に正規表現を使用することもできます。アルファ数値を照合するには、正規表現 ^ [a-zA-Z0-9] + $を使用してre.match(regex、string)を呼び出すことができます。たとえば、 im