Python

 Computer >> コンピューター >  >> プログラミング >> Python
  1. Pythonで2つの数の平方差が素数かどうかを判定する方法

    2つの整数 x と y が与えられたとき、それぞれの2乗(正方形の面積とみなせます)の差が素数であるかどうかを判定する問題を考えてみましょう。 たとえば、x = 7、y = 6 の場合を考えます。このとき面積の差は 7² − 6² = 49 − 36 = 13 となり、13 は素数なので答えは True になります。 解法のポイント:因数分解の性質を利用する 単純に差を計算してから素数判定をする方法もありますが、数学的な性質を使うともっとスマートに解けます。2つの数の平方差は、次のように因数分解できます。 x² − y² = (x + y)(x − y) 素数は 1 とその数自身でしか割り切れ

  2. Pythonで二分探索木(BST)の各内部ノードが子を1つだけ持つかどうかを判定する方法

    問題概要 二分探索木(BST)の先行順走査(プレオーダー走査)の結果が与えられたとき、すべての内部ノードが子を1つだけ持っているかどうかを判定する問題を考えます。 たとえば、入力が preorder = [22, 12, 13, 15, 14] の場合、この先行順走査に対応するBSTは下図のようになります。すべての内部ノードが子を1つだけ持っているため、出力は True となります。 効率的な解法のポイント ここで重要な性質があります。あるノードが子を1つだけ持つ場合、そのノードのすべての子孫は、現在のノードよりも「すべて小さい」か「すべて大きい」のどちらかに必ずなります。逆に、子を2つ持

  3. Pythonで2次元行列を時計回りに90度回転させる方法

    はじめに本記事では、n × n の2次元行列を時計回りに90度回転させるアルゴリズムを、Pythonのコード例とともにわかりやすく解説します。問題の概要たとえば、次のような3 × 3 の行列が与えられたとします。157963213この行列を時計回りに90度回転させると、結果は以下のようになります。291165337解法のアプローチこの問題は、以下の手順で解くことができます。一時的な格納用リスト temp_matrix を空の状態で用意します。行列の各列(0 から 行列の長さ - 1 まで)に対して、以下の処理を繰り返します。空のリスト temp を作成します。行インデックスを「最終行から先頭行

  4. Pythonでリアルタイムの為替レートを取得する方法【初心者向け】

    PythonはAPI呼び出しの処理が非常に得意なプログラミング言語です。本記事では、通貨の為替レートをリアルタイムで取得する方法と、過去(ヒストリカル)データを取得する方法について、具体的なコード例とともにわかりやすく解説します。forex-pythonライブラリを使う方法「forex-python」は、通貨換算レートを最も手軽に取得できるPythonライブラリの一つです。必要な通貨コードを引数として渡すだけで、変換結果を簡単に取得できます。以下の例では、現在のリアルタイム為替レートを取得しています。サンプルコードfrom forex_python.converter import Curre

  5. PythonでHTMLを解析する方法|html.parserモジュールによるカスタムパーサーの作り方

    Pythonには、html.parserモジュールに含まれるHTMLParserクラスを使ってHTMLファイルを処理する機能が標準で備わっています。このクラスを利用することで、HTMLタグの種類やタグの位置など、さまざまな属性情報を検出できるだけでなく、HTMLファイル内に含まれるデータを識別して取得することも可能です。以下の例では、HTMLParserクラスを継承したカスタムパーサークラスを作成し、クラス内で定義したタグやデータだけを処理する方法を紹介します。ここでは「開始タグ」「終了タグ」「データ」の3種類のイベントを処理します。処理対象となるHTMLファイルまず、Pythonのカスタムパ

  6. Pythonのmmapモジュールでメモリマップトファイルを読み書き・検索する方法

    Pythonプログラムでファイルオブジェクトを読み込み、その内容を変更したい場合、アプローチは大きく2つあります。1つ目は、ファイルが存在する物理ストレージ上のデータを直接変更する方法。2つ目は、システムのメモリ(RAM)上でデータを直接変更する方法です。本記事では、Pythonに標準搭載されているmmapモジュールを使って、ファイルオブジェクトの読み込み・検索・編集を行う方法を解説します。openやread、lseekといったシステムコールを何度も呼び出してファイルを操作する代わりに、メモリマッピングではファイルのデータをそのままメモリに配置できるため、メモリ上で直接ファイルを操作できます。

  7. Pythonでリスト内の任意の文字列にサフィックス(特定の文字列)が一致するか確認する方法

    プログラミングでは、特定の単語や文字列がリストの中に存在するかどうかを調べたい場面がよくあります。データの前処理やビジネスロジックの実装において、こうした存在チェックは非常に重要なステップとなります。本記事では、複数の文字列を格納したリストの中に、指定した文字列(サフィックス)が含まれているかどうかを確認する方法を、any()関数とfilter()関数の2つのアプローチから解説します。any()関数を使う方法Pythonのany()関数は、イテラブル(反復可能オブジェクト)内の要素のいずれかひとつでも条件を満たせばTrueを返し、ひとつも満たさなければFalseを返します。この特性を利用するこ

  8. KivyのPythonチェックボックスウィジェットの使い方

    KivyとはKivyは、マルチタッチアプリなど革新的なユーザーインターフェースを活用したアプリケーションを迅速に開発するためのオープンソースのPythonライブラリです。Androidアプリだけでなく、デスクトップアプリケーションの開発にも利用できます。本記事では、KivyにおけるGridLayout(グリッドレイアウト)とCheckBox(チェックボックス)の基本的な使い方を解説します。GridLayoutとCheckBoxの組み合わせ必要なモジュールをインポートした後、2列構成のグリッドレイアウトを作成します。1列目にはラベルを配置し、もう1列にはチェックボックスを配置します。チェックボッ

  9. Pythonでネストされた辞書をフラットな辞書に変換する方法

    非構造化データが世界中で活用されるようになった今、ネストされたJSONのようにデータ構造が深く入れ子になっている形式に遭遇することは珍しくありません。Pythonでは、内側のキーと外側のキーを連結することで、ネストされたデータ構造をフラット化(平坦化)して扱うことができます。この記事では、ネストされた辞書(dict)を受け取り、それをフラットな辞書へ変換する2つの方法を紹介します。方法1:再帰処理を使ったアプローチまずは、自分で関数を実装する再帰的なアプローチです。この方法では、辞書内の各要素を再帰的に処理する関数を設計します。引数として、処理対象の辞書、出力用の辞書(プレースホルダー)、親キ

  10. Pythonで指定範囲内のセットビット数をカウントする方法

    正の整数を2進数に変換すると、値が「1」になっているビット(セットビット)がいくつか存在します。セットビットとは、2進数表現において1として表されるビットのことです。この記事では、数値を2進数に変換した後、指定した範囲内にあるセットビットの数を取得する方法を2つ紹介します。bin関数とスライスを使う方法以下の例では、まずbin関数を使って数値の2進数表現を取得します。次にスライス操作で「0b」という接頭辞を取り除き、文字列を反転させた上で、指定された範囲(l桁目からr桁目まで)に含まれる「1」の個数をカウントします。サンプルコードdef SetBits_cnt(n, l, r): bi

  11. Pythonの辞書から特定のキーだけを抽出する方法

    辞書(dict)はPythonで最も広く使われているデータ構造の一つです。データを「キー」と「値」のペアとして保持します。この記事では、既存の辞書から指定したキーに対応する要素だけを取り出して、新しい辞書を作成する方法を2つのアプローチで解説します。方法1:辞書内包表記を使う最もシンプルでPythonらしい方法が、辞書内包表記です。in演算子と組み合わせることで、抽出したいキーの集合に含まれるキーだけをループ処理し、新しい辞書を効率的に生成できます。コード例dictA = {Sun: 2 PM, Tue: 5 PM, Wed: 3 PM, Fri: 9 PM} # 元の辞書 print(Gi

  12. Pythonのprint()関数のfileパラメータ活用術:ファイルや標準出力への書き込み方法

    Pythonのprint()関数は、コマンドラインや対話型インタプリタにテキストを表示するために日常的によく使われます。しかし、実はこの関数は画面表示だけでなく、ファイルや出力ストリームに直接書き込むこともできるのです。その鍵となるのがfileパラメータです。ファイルへの出力print()関数のfile引数を使えば、開いたファイルオブジェクトに対して直接テキストを書き込めます。まず新しいファイル名を指定して書き込みモード(w)でファイルを開き、そのファイルオブジェクトをprint()関数のfile引数に渡します。書き込みたい値は、通常の引数として渡すことができます。サンプルコードNewfile

  13. KivyのFloatLayoutとは?Pythonでボタンを絶対位置・相対位置に配置する方法

    KivyのFloatLayout(フロートレイアウト)とは? Kivyは、マルチタッチアプリのような革新的なユーザーインターフェースを備えたアプリケーションを迅速に開発するために設計された、オープンソースのPythonライブラリです。Androidアプリはもちろん、WindowsやmacOS向けのデスクトップアプリ開発にも幅広く活用されています。 本記事では、FloatLayoutウィジェットを使って、ウィンドウ内のさまざまな位置にボタンを配置する方法を解説します。ボタンの位置指定には「絶対位置」と「相対位置」の2つのアプローチがあり、それぞれ挙動が異なる点に注目してください。 絶対位置(po

  14. 【Python入門】リストの先頭と末尾から要素を削除する2つの方法

    Pythonでは、リストの先頭(フロント)と末尾(リア)から指定した数の要素を削除したい場面がよくあります。この記事では、代表的な2つの方法——スライス(slicing)とdelキーワードを使ったアプローチを、具体的なコード例とともに解説します。 方法1:リストのスライスを使う このアプローチでは、リストの先頭と末尾の両方からスライスを行い、その結果を新しいリストとして保存します。削除する要素数は変数として指定できるため、柔軟に対応できます。 スライス listA[v:-v] を使うことで、「先頭から v 個」と「末尾から v 個」を除外した中間部分だけを取り出せます。 コード例 listA

  15. PythonのpyqrcodeモジュールでQRコードを生成する方法

    QRコードは、白い背景の上に黒い四角形を格子状に配置した2次元コードで、カメラなどの画像読み取り装置によって読み取ることができます。商業用途での在庫追跡や決済、ウェブサイトへのログインなど、スマートフォンユーザー向けのさまざまなアプリケーションで広く利用されています。Pythonではpyqrcodeモジュールを使うことで、簡単にQRコードを生成できます。QRコードには、データを効率的に格納するための4つの標準エンコードモード(数値モード、英数字モード、バイト/バイナリモード、漢字モード)が用意されています。英数字のQRコードを生成するpyqrcodeモジュールには、QRコードを生成するためのc

  16. Pythonでサブ配列を1回反転するだけで配列がソートされるかどうかを判定する方法

    すべての要素がユニーク(重複なし)である配列 nums があるとします。この配列の部分配列(サブ配列)を1つだけ反転したとき、配列全体がソートされた状態になるかどうかを判定するのが本記事のテーマです。なお、配列がすでにソート済みの場合も True を返します。 たとえば、入力が nums = [4,6,27,25,15,9,37,42] の場合を考えてみましょう。[27,25,15,9] の部分を反転すると [4,6,9,15,25,27,37,42] となり、配列全体が昇順に整列します。したがって、この場合の出力は True になります。 アルゴリズムのアプローチ この問題は、配列を一

  17. Pythonで斜辺と面積から直角三角形が成立するか判定し、底辺と高さを求める方法

    問題概要 直角三角形の斜辺と面積が与えられたとき、その三角形の底辺と高さを求めます。条件を満たす三角形が存在しない場合は False を返します。 例えば、斜辺が 10、面積が 24 の場合、答えは (6, 8) となります。 解法のアプローチ この問題は二分探索(バイナリサーチ)を使うことで効率的に解けます。考えるポイントは次の通りです。 直角三角形の面積は「0.5 × 底辺 × 高さ」で表されます。 斜辺が固定されているとき、底辺と高さが等しい(どちらも 斜辺 ÷ √2)ときに面積が最大になります。 そのため、理論上の最大面積を与える値 s = √(hypo² / 2.0) を求め、指

  18. Pythonで文字列がパターンで定義された文字の順序に従っているかを確認する方法

    文字列 s と、パターンを表す別の文字列 t が与えられたとします。このとき、s に含まれる文字が、t で定義された順序どおりに並んでいるかどうかを判定します。なお、パターン t には重複する文字は含まれないものとします。 たとえば、s = hello world、t = hw という入力の場合、h の後ろに w が現れるため、出力は True になります。 解決のためのアプローチ この問題は、以下の手順で解決できます。 s の長さが t の長さより短い場合は、False を返します。 i を 0 から len(t) - 2 の範囲で繰り返します。 x := t[i]、y := t[i +

  19. Pythonで2つの文字列が回転関係にあるかどうかを判定する方法

    問題概要2つの文字列 s と t が与えられたとき、t が s を回転(ローテーション)させたものになっているかどうかを判定します。例えば、s = hello、t = llohe の場合、s を左に2文字分回転すると llohe になるため、結果は True となります。解法のアプローチこの問題は「文字列を自分自身と連結する」というシンプルなテクニックで効率的に解くことができます。手順は以下の通りです。s と t の長さが異なる場合、回転関係にはなり得ないので False を返します。temp := s + s として、s を2回連結した文字列を作成します。temp の中に t が含まれている

  20. Pythonで配列内に積がkとなる部分配列が存在するかどうかを判定する方法

    問題の概要正の数と負の数が混在する配列 nums と、もうひとつの値 k が与えられます。このとき、要素の積がちょうど k になる部分配列(連続する要素からなる配列)が nums の中に存在するかどうかを判定します。たとえば、nums = [-2, -1, 1, 3, 5, 8]、k = 6 という入力の場合、部分配列 [-2, -1, 3] の積は (-2) × (-1) × 3 = 6 となるため、出力は True になります。アルゴリズムの考え方この問題は、「最大積部分配列」を求める際によく使われるテクニックと同じ発想で解くことができます。ポイントは、負の数を掛けると積の符号が反転し、そ

Total 8994 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:210/450  20-コンピューター/Page Goto:1 204 205 206 207 208 209 210 211 212 213 214 215 216