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

Pythonで数値に最初と最後のビットのみが設定されているかどうかを確認します


数nがあるとします。数値の最初と最後の位置に2つのセットビットしかないかどうかを確認する必要があります。

したがって、入力がn =17の場合、nのバイナリ表現は10001であるため、出力はTrueになります。最初と最後の位置には2つの1しかありません。

これを解決するには、次の手順に従います-

  • nが1と同じ場合、
    • Trueを返す
  • n-1が2の累乗の場合はtrueを返し、それ以外の場合はfalseを返します

理解を深めるために、次の実装を見てみましょう-

サンプルコード

def is_pow_of_two(n):
   return (n & n-1) == 0

def solve(n):
   if n == 1:
      return True
   return is_pow_of_two (n-1)
      
n = 17
print(solve(n))

入力

17

出力

True

  1. 数値のすべてのビットがPythonで設定されているかどうかを確認します

    数nがあるとします。与えられた数nに対してすべてのビットが設定されているかどうか(1)を確認する必要があります。 したがって、入力がn =255のような場合、255のバイナリ表現は11111111であるため、出力はTrueになります。 これを解決するには、次の手順に従います- 数値が0と同じ場合、 Falseを返す 0の場合、実行 数値が偶数の場合、 Falseを返す 数値:=(数値/ 2)の商 Trueを返す 理解を深めるために、次の実装を見てみましょう- 例 def solve(number):    if number == 0:  

  2. Pythonで文字列に少なくとも1つの文字と1つの数字があるかどうかを確認するにはどうすればよいですか?

    Pythonでこれを確認する最も簡単な方法は、正規表現を使用することです。指定された文字列に少なくとも1つの文字と1つの数字があるかどうかを確認するために、re.match(regex、string)を使用します。 例 import re print(bool(re.match('^(?=.*[0-9]$)(?=.*[a-zA-Z])', 'hasAlphanum123'))) print(bool(re.match('^(?=.*[0-9])(?=.*[a-zA-Z]$)', 'some string'))) 出力 True F