-
Pythonで16進数のビット単位XOR(排他的論理和)を計算する方法
Pythonで16進数のXOR演算を行う基本方法Pythonでは、^ 演算子を使うことで、任意の整数型の数値に対してビット単位のXOR(排他的論理和)を簡単に計算できます。16進数の場合も特別な処理は不要で、以下のように記述するだけです。a = 0x12ef b = 0xabcd print(hex(a ^ b))実行結果0xb922コードの解説数値の先頭に付いている 0x は、その数値が16進数表記であることを示しています。Pythonでは 0x を付けることで、リテラルを16進数として扱うことができます。重要なポイントとして、^ 演算子によるXOR計算は、数値が10進数・16進数・2進数・
-
Pythonで数値を単語(英語表記)に変換する方法
Pythonで数値を文字列に変換する基本Pythonには、数値を文字列へ変換するための標準的な方法が用意されています。それが文字列クラスのコンストラクタ str() です。この関数を使うことで、整数や浮動小数点数を簡単に文字列型へキャストできます。i = 10050 str_i = str(i) print(type(str_i))このコードを実行すると、次のような出力が得られます。<class 'str'>このように str() を使えば、数値が確かに文字列型(str)に変換されていることが確認できます。数値を英語の単語に変換するには?しかし、「99」を「nine
-
Pythonで強い数(ストロングナンバー)を生成・出力する方法
強い数(Strong Number)とは?強い数(ストロングナンバー)とは、その数を構成する各桁の数字の階乗の合計が、元の数自身と等しくなる数のことです。例えば、145は次のように計算できるため、強い数です。1! + 4! + 5! = 1 + 24 + 120 = 145ステップ1:階乗を計算する関数を作成するまず、任意の整数の階乗を求める関数を定義します。whileループを使って、1からnまでの積を順番に計算するシンプルな実装です。def factorial(n): num = 1 while n >= 1: num = num * n
-
【Python入門】数値を範囲内に制限するクランプ関数の自作方法
クランプ(clamp)関数とは?クランプ関数とは、ある値を指定された最小値と最大値の範囲内に制限する関数です。値が範囲を下回れば最小値に、上回れば最大値に丸められます。残念ながら、Pythonの標準機能には組み込みのクランプ関数が用意されていません。しかし、max() と min() を組み合わせることで、わずか数行で簡単に自作できます。クランプ関数の実装例def clamp(num, min_value, max_value): return max(min(num, max_value), min_value) print(clamp(5, 1, 20)) print(clamp
-
Pythonでナルシシスト数(アームストロング数)を出力する方法を解説
ナルシシスト数とは?Pythonでナルシシスト数(Narcissistic Number、別名アームストロング数)を出力する前に、まずその定義を確認しておきましょう。ナルシシスト数とは、各桁の数字を「桁数」乗した値の合計が、元の数と等しくなる整数のことです。例えば、153は3桁の数であり、1³ + 5³ + 3³ = 1 + 125 + 27 = 153となるため、ナルシシスト数です。代表的なナルシシスト数には、1、2、3、…、9(1桁の数はすべて該当)、そして153、370、371、407などがあります。Pythonで実装するコード例以下のコードでは、指定した範囲内の数を順番にチェックし、各
-
Pythonで数値(シグナル番号)からシグナル名を取得する方法をわかりやすく解説
Pythonでは、数値(シグナル番号)からシグナル名を直接取得するための専用関数は標準では提供されていません。しかし、signalモジュールが持つすべての属性を活用することで、シグナル番号とシグナル名の対応関係を格納した辞書を自作することができます。 シグナル名を取得する基本的な流れ おおまかな手順は以下の3ステップです。 signal.__dict__ でモジュール内の全属性を取得する SIG で始まる名前の変数だけを抽出する(SIG_ で始まる内部定数は除外) シグナル番号をキー、シグナル名を値とする辞書として保存する コード例 import signal sig_items =
-
Pythonで複素数の平方根を求める方法【cmathライブラリの使い方】
Pythonで複素数の平方根を求めるには? Pythonでは、cmathライブラリを使うことで複素数の平方根を簡単に求めることができます。cmathは「complex mathematics(複素数学)」の略で、複素数を扱うためのPython標準ライブラリです。 通常のmathモジュールは負の数の平方根を計算しようとするとエラー(ValueError)が発生しますが、cmathモジュールなら負の数や複素数に対しても正しく平方根を計算できます。そのため、複素数を含む数学的な処理を行う際にはcmathが便利です。 基本的な使い方 cmathモジュールからsqrt関数をインポートして使用します。以
-
Pythonで複素数をプロットする方法を実例コード付きで解説
Pythonで複素数を可視化する基本の考え方 Pythonでは、matplotlibとnumpyを組み合わせることで、複素数を簡単にグラフ化できます。複素数は「実部(real)」と「虚部(imag)」という2つの成分を持つため、実部をx軸、虚部をy軸に対応させれば、複素平面上の点として視覚的に表現できます。 複素数の配列を散布図として描くサンプルコード 以下は、複素数の配列を受け取り、複素平面上に赤い点としてプロットする基本的な例です。 import matplotlib.pyplot as plt import numpy as np cnums = np.arange(5) + 1j
-
Pythonでキース数(Keith数)を判定する方法をわかりやすく解説
Pythonでは、シンプルな関数を定義するだけで、ある数がキース数(Keith number)であるかどうかを簡単に判定できます。まずは、キース数とはどのような数なのかをおさらいしておきましょう。 キース数とは? キース数(別名:レピフィジット数)とは、その数の各桁の数字から始まる数列を作り、「直前の桁数分の項の和」を次々と計算していったとき、最終的に元の数自身に到達するような自然数のことです。 例えば 14 はキース数です。その理由は以下の通りです。 初期の数列:1, 4 1 + 4 = 5 4 + 5 = 9 5 + 9 = 14 ← 元の数に到達! キース数を判定するPythonコー
-
Pythonで文字列から数字を削除する3つの方法をわかりやすく解説
Pythonで文字列に含まれる数字だけを取り除きたい場面はよくあります。例えば、ユーザー入力のクレンジングやデータの前処理などがその代表例です。この記事では、文字列から数字を削除する代表的な方法を、コード例とともにわかりやすく紹介します。 方法1: ループとisdigit()メソッドを使う 最も基本的なアプローチは、文字列を1文字ずつ確認し、数字以外の文字だけを新しいリストに集める方法です。最後にjoin()メソッドを使って、それらの文字を1つの文字列に結合します。 コード例 my_str = qwerty123asdf32 non_digits = [] for c in my_str:
-
Pythonでwhileループをforループに変換する方法【itertools.count()の使い方】
itertools.count()を使ってforループに書き換えるwhileループをforループに書き換えたい場合、標準ライブラリitertoolsモジュールのcount()関数が便利です。count()関数は、等間隔に並んだ値を順番に生成するイテレータを返します。この関数は2つの引数を受け取ります。start:開始値(デフォルトは0)step:増分(デフォルトは1)引数を省略してデフォルト設定のまま使用すると、無限に続くイテレータが生成されます。そのため、ユーザー入力など特定の条件でループを終了したい場合は、break文で明示的にループを抜ける必要があります。コード例import itert
-
【Python】if-elif-else文とwhileループでユーザー入力に応答する方法
この問題は、if-elif-else文を使うことで解決できます。さらに、「有効な選択肢が入力されるまで繰り返し尋ねる」という動作を実現したい場合は、whileループを併用します。有効な選択肢が入力された時点でbreak文によってループを抜け、無効な入力の場合は何度でも入力を促し直す仕組みです。また、入力値は整数として扱う必要があります。input()関数は常に文字列を返すため、int()メソッドを使って入力値を整数型に変換(型キャスト)してから比較を行いましょう。コード例以下のコードは、上記のポイントをすべて反映した実装例です。print(Come-on in. Need help with
-
Pythonプログラムの修正方法:インデントエラーと未定義変数の解決策
エラーの原因 このプログラムには、主に2つの問題があります。 1. インデント(字下げ)の欠落 太字部分で発生している最初の問題は、インデントされていないブロックによるものです。Pythonでは、if文の中で実行したい処理は、必ずインデント(通常は半角スペース4つ)で字下げする必要があります。該当する行にインデントを1つ追加してください。 2. 変数「name」が定義されていない 2つ目の問題は、name変数が定義される前に使用されていることです。Pythonでは、代入されていない変数を参照すると NameError が発生します。name = Daniel のように、変数を使用する前に必ず定
-
Pythonでリスト内の同じ要素を削除する方法【初心者向け解説】
問題の概要Pythonであるリスト(L1)から、別のリスト(L2)に含まれる共通の要素を削除したい場合、コードの書き方に少し注意が必要です。特によくあるミスとして、return文をforループの中に記述してしまうことが挙げられます。正しく動作するコード以下のコードでは、return文をforブロックの外側に移動しているのがポイントです。これにより、すべての要素のチェックが完了してから結果が返されます。また、最後のprint文では、誤字のある「remaove_new」ではなく、正しい関数名「remove_same」を呼び出すようにしましょう。def remove_same(L1, L2):
-
Pythonで辞書(dict)の値を取得・置き換える方法をわかりやすく解説
Pythonでは、アクセス演算子 [] を使うことで、辞書の値を簡単に取り出して変数に代入できます。また、同じ構文をそのまま利用すれば、特定のキーに紐づく値を後から別の値に置き換える(上書きする)ことも可能です。 辞書の値を変数に代入する基本例 まずは、[] 演算子でキーを指定し、対応する値を取得する基本的なコードを見てみましょう。 my_dict = { foo: 42, bar: 12.5 } new_var = my_dict[foo] print(new_var) 出力結果 42 my_dict[foo] と記述することで、キー foo に対応する値「42」が取得され、
-
Pythonの正規表現(Regex)で文字列内の「10+1」パターンをすべて検索する方法
Pythonの正規表現で「10+1」パターンをすべて検索する 与えられた文字列の中から、正規表現パターン「10+1」に一致する部分をすべて見つけたいケースはよくあります。ここでの「10+1」は、「1」の後に「0」が1回以上続き、その後に再び「1」が続く並びを意味します。Pythonでは、標準ライブラリのreモジュールを使うことで、このような検索を簡単に実現できます。 reモジュールにはfindall()という便利なメソッドが用意されています。このメソッドは正規表現パターンと検索対象の文字列を引数に受け取り、マッチしたすべての箇所をリストとして返します。 入力例 10000001 hello
-
Pythonの正規表現を使って文字列から最大の数値を抽出する方法
はじめにPythonの正規表現(regex)を使って文字列から最大の数値を抽出する最も簡単な方法は、以下の2ステップです。reモジュールを使って、文字列内のすべての数値を抽出する抽出した数値の中から最大値を見つける具体例たとえば、次のような入力文字列があるとします。「この都市には121005人が住んでおり、隣の都市には1587469人、遠く離れた都市には18775994人が住んでいます。」この文字列から得られるべき出力は次のとおりです。18775994正規表現「\d+」の使い方文字列内のすべての数値を検索するには、「\d+」という正規表現パターンを使用します。「\d」は1桁の数字(digit)
-
Pythonの正規表現でキャメルケース(CamelCase)の単語間にスペースを挿入する方法
ここで解決したい課題は、CamelCase(キャメルケース)で書かれた文字列を、個々の単語に分割して読みやすい形に変換することです。この問題は、正規表現を使えばシンプルに解決できます。基本的な考え方は、「対象の文字列内に含まれるすべての大文字を検出し、その直前にスペースを挿入する」というものです。Pythonでは、標準ライブラリのreモジュールが提供するsub()メソッドを使うことで、この処理を簡単に実装できます。変換イメージ例として、次の入力文字列を考えます。AReallyLongVariableNameInJavaこの文字列に対して処理を行うと、次のような出力が得られることが期待されます。
-
Pythonの正規表現でテキストからメールアドレスを抽出する方法
メールアドレスは非常に複雑で、世界中で統一された標準規格が存在しないため、正規表現だけでメールアドレスを正確に識別するのは容易ではありません。そこで役立つのが RFC 5322 です。この規格ではメールアドレスの形式が定義されており、本記事ではこの形式をもとに、テキストからメールアドレスを抽出する方法を解説します。たとえば、次のような入力文字列が与えられた場合を考えてみましょう。Hi my name is John and email address is john.doe@somecompany.co.uk and my friends email is jane_doe124@gmail.
-
Pythonで単語を辞書式順序に並べ替える方法
辞書式順序(レキシコグラフィカル順)とは単語を辞書式順序で並べ替えるとは、まず単語の1文字目を基準に並べ、1文字目が同じ単語同士はそのグループ内で2文字目を基準に並べ替えるというように、実際の言語の辞書(データ構造の「辞書」ではなく)と同じ規則で整列することを指します。Pythonにはこのような並べ替えを行うための機能として、sort() と sorted() の2つのメソッドが用意されています。それぞれの使い方と、どのような場面でどちらを使うべきかを見ていきましょう。その場でソートする:sort() メソッド元のリスト自体の順序を直接変更してよい場合(インプレースソート)は、sort() メ