-
Pythonの辞書で存在しないキーを安全に扱う方法|KeyError対策を徹底解説
Pythonには「辞書(Dictionary)」と呼ばれるコンテナ型があります。辞書ではキー(key)と値(value)を対応付けて管理でき、値へのアクセスは定数時間で行えるため非常に高速です。しかし、存在しないキーにアクセスしようとすると、エラーが発生してしまうという課題があります。 本記事では、辞書のキーが存在しない場合に発生するエラーへの対処法として、get()メソッド、setdefault()メソッド、そしてcollections.defaultdictの3つの手法をわかりやすく解説します。 存在しないキーにアクセスするとどうなる? まず、辞書に存在しないキーへ直接アクセスした場合の挙
-
PythonでQuine(クワイン)プログラムを書いてみよう
「Quine(クワイン)」とは、入力を一切受け取らずに、自分自身のソースコードを出力する特殊なプログラムのことです。一見すると不思議な自己言及的な仕組みですが、実装にはいくつかの厳格なルールがあります。最も重要な条件は、プログラム内部からソースコードファイルを読み込んではいけないという点です。つまり、純粋にコード自身の論理だけで自分の内容を再現しなければなりません。 サンプルコード Pythonでは、わずか1行でQuineを実現できます。 a=a=%r;print (a%%a);print (a%a) 実行結果 a=a=%r;print (a%%a);print (a%a) ご覧のとお
-
Pythonで10進数⇔2進数の相互変換を行う方法
10進数の数値と2進数の数値が与えられたとき、それぞれを相手側の記数法へ変換するのが本稿のテーマです。ここではPythonを使って、「10進数→2進数」「2進数→10進数」の双方向の変換処理を自作する方法を解説します。 アルゴリズム BintoDec():2進数から10進数への変換 Step1: 2進数を入力する。 Step2: 入力された2進数の桁数(文字列の長さ)を取得する。 Step3: forループを使って2進数を10進数へ変換する。 例えば2進数が「1111」の場合、計算は次のようになります。 1*2**3 + 1*2**2 + 1*2**1 + 1*2**0 = 15 Step4:
-
Pythonで実装するPageRankアルゴリズム:仕組みからコード例まで徹底解説
PageRank(ページランク)アルゴリズムは、Googleの創業者であるラリー・ペイジとセルゲイ・ブリンによって考案された、Webページの重要度を評価するためのアルゴリズムです。本記事では、PageRankの基本的な考え方と、Pythonを使った具体的な実装方法をわかりやすく解説します。 PageRankアルゴリズムの基本概念 Webページの集合は「有向グラフ」として表現できます。有向グラフは「ノード(頂点)」と「接続(エッジ)」という2つの要素で構成されます。PageRankの世界では、各ページがノードに相当し、ページ間をつなぐハイパーリンクが接続に相当します。 PageRankを用いるこ
-
Pythonで素数を見つける3つの方法を徹底解説【初心者向け】
はじめに:素数とは?まず、素数とは何かを確認しておきましょう。素数とは、1とその数自身という、ちょうど2つの整数でしか割り切れない正の整数のことです。なお、1は素数には含まれません。代表的な素数としては、2、3、5、7、11などが挙げられます。この記事では、Pythonを使って素数を見つけるための3つの方法を、サンプルコードと実行結果とともに段階的に解説していきます。それぞれの方法で処理速度や効率がどう変わるのかにも注目しながら読み進めてください。方法1:シンプルなforループを使う最も基本的なのは、ネストしたforループ(二重ループ)を使う方法です。外側のループで2から指定した数値未満までの
-
Pythonの組み込みデータ構造を徹底解説|リスト・辞書・タプル・セットの基本と使い方
Pythonには、int(整数)、float(浮動小数点数)、complex(複素数)、str(文字列)、bool(真偽値)といったシンプルな組み込み型に加え、リスト(List)、辞書(Dict)、タプル(Tuple)、セット(Set)といった複合的な組み込みデータ構造が用意されています。 本記事では、これら4つの主要なデータ構造について、作成方法から要素へのアクセス、変更方法、そして便利なメソッドまで、サンプルコード付きで詳しく解説します。 リスト(List)とは リストはPythonにおける代表的なデータ型の一つで、オブジェクトのコレクションです。順序があり(ordered)、ミュータブ
-
Pythonのアンダースコア(_)の使い方を徹底解説!シングルとダブルの違いとは
Pythonでは、状況に応じてシングルアンダースコア(_)とダブルアンダースコア(__)を使い分けます。一見すると単なる記号に見えますが、それぞれに明確な役割や慣習が存在します。 Pythonでアンダースコアが使われる主なケースは以下のとおりです。 インタプリタで最後に評価した式の値を保持したい場合 特定の値を意図的に無視したい場合 変数名や関数名の宣言において特別な意味を持たせたい場合 数値リテラルの桁区切りとして使いたい場合 国際化(i18n)や地域化(l10n)の関数として使いたい場合 それでは、それぞれのケースについて具体例を見ていきましょう。 インタプリタでの使用 Pythonの
-
Pythonで行列を操作する方法|NumPyを使った基本演算まとめ
Pythonでは、NumPyモジュールを利用することで、行列に対するさまざまな操作や演算を簡単に実行できます。NumPyは数値計算用の強力なライブラリであり、行列演算のための便利なメソッドが多数用意されています。 主な行列演算メソッド一覧 add() — 2つの行列の対応する要素同士を加算します。 subtract() — 2つの行列の対応する要素同士を減算します。 divide() — 2つの行列の対応する要素同士を除算します。 multiply() — 2つの行列の対応する要素同士を乗算します(要素ごとの積)。 dot() — 行列の掛け算(内積)を実行します。要素ごとの乗算ではなく、数学
-
Pythonで辞書のリストを値でソートする方法|sorted関数とlambdaの使い方
本記事では、複数の辞書を格納したリストを、各辞書が持つ値(value)に基づいて並べ替える方法を解説します。 サンプルとして使う辞書には、「name(名前)」と「roll(出席番号)」という2つのキーが含まれています。まずはPythonの組み込み関数 sorted() とラムダ式(lambda)を組み合わせて、roll の値で昇順にソートした結果を表示します。 続いて、name と roll の両方を組み合わせた条件でのソート、そして roll の値で降順にソートする方法まで、順番に見ていきましょう。 サンプルコード # 辞書のリストを初期化 my_list1 = [{ name : A
-
PythonでWeb上の単語リストをスクレイピングし、アルファベット順に並んだ単語を見つける方法
この問題を解決するには、Pythonのrequestsモジュールを使用します。requestsはHTTP通信を簡単に行える人気のライブラリで、Web上のテキストデータを取得する際に非常に便利です。requestsモジュールのインストールまず、コマンドラインで以下のコマンドを実行して、requestsモジュールをインストールしてください。pip install requestsスクレイピングの手順requestsモジュールをインポートします。URLからデータを取得(fetch)します。UTF-8でテキストをデコードします。文字列を単語のリストに変換します。順序付き単語の判定手順ループを使って単語
-
PythonのSunPyライブラリで太陽画像をプロットする方法
Pythonでは、SunPyというパッケージを使って太陽画像を作成・表示することができます。SunPyには、各地の太陽観測所や太陽研究機関が提供する陽子フラックスや電子フラックスなど、さまざまな太陽観測データが含まれています。 SunPyは、以下のコマンドで簡単にインストールできます。 pip install sunpy AIA画像とは ここではサンプルとしてAIA画像をプロットします。AIA(Atmospheric Imaging Assembly:大気圏撮像装置)は、NASAの太陽観測衛星SDO(Solar Dynamics Observatory)に搭載された観測機器の一つで、太陽大気を
-
Pythonで実行中のスクリプト名を取得して出力する方法
今回は、Pythonで「現在実行中のスクリプト名(ファイル名)」を取得して出力するプログラムを作成します。コード自体は非常にシンプルで、標準ライブラリの sys モジュールを使うだけで実現できます。スクリプト名の取得の仕組みPythonでは、コマンドラインから渡された引数が sys.argv というリストに格納されます。このリストには、以下のような情報が入っています。第1要素(sys.argv[0]):実行されたスクリプトのパス(ファイル名を含む)第2要素以降:プログラムに渡された各種引数C言語やC++における main(int argc, char** argv) の argv[0] に相当
-
Pythonでのプロセス同期とプーリング徹底解説【multiprocessing活用ガイド】
Pythonのmultiprocessingモジュールを使うと、複数のプロセスを活用した並行・並列処理を簡単に実装できます。本記事では、プロセス間の排他制御に欠かせない同期プリミティブ(Lock)と、複数のタスクを効率的に分散処理するPool(プーリング)について、サンプルコード付きでわかりやすく解説します。 プロセス間の同期 multiprocessingは、APIを通じてプロセスを生成・管理するためのパッケージです。ローカル環境とリモート環境の両方での並行処理をサポートしており、このモジュールを利用することで、プログラマは1台のマシン上の複数のCPUコアを最大限に活用できます。Windo
-
Pythonでツイートする方法|Tweepyを使ったX(Twitter)への投稿手順を解説
Pythonからツイートを行うには、事前にいくつかの準備ステップを踏む必要があります。この記事では、Tweepyライブラリを使ってX(旧Twitter)に投稿するまでの流れを、初心者にもわかりやすく順を追って解説します。 事前準備の5つのステップ ステップ1:プロフィールの作成と電話番号の登録 まず、X(Twitter)のプロフィールを作成し、アカウントに携帯電話番号を紐付けます。 「設定」→「電話を追加」→「番号を追加」→「確認」→「保存」の順に進めてください。 登録が完了したら、すべてのテキスト通知をオフにしておきましょう。 ステップ2:新しいアプリの作成 次に、開発者向けのアプリケーショ
-
Pythonのマルチプロセッシング入門!Process・Pipe・Queue・Lockの使い方を解説
Pythonにおけるマルチプロセッシングとは Pythonのmultiprocessingパッケージは、新しい子プロセスを生成(スポーン)して実行するための機能を提供します。子プロセスの終了を待機したり、並行処理を継続させたりする際には、threadingモジュールとよく似たAPIを使って現在のプロセスを制御します。 基本的な流れ マルチプロセッシングを利用する際は、まずProcessオブジェクトを作成し、続けてstart()メソッドを呼び出すのが基本の流れです。 サンプルコード from multiprocessing import Process def display(): p
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c
-
Pythonで作るモールス信号変換ツール|暗号化・復号化の仕組みとサンプルコード
モールス信号とは? モールス信号(Morse Code)は、暗号技術(クリプトグラフィー)の分野で古くから活用されてきた通信手法のひとつです。その名前は、発明者のサミュエル・F・B・モース(Samuel F. B. Morse)に由来します。この技術では、メッセージを「.(ドット)」「-(ダッシュ)」「/」などの記号の組み合わせへと変換します。 仕組みは非常にシンプルです。英語のアルファベット1文字ごとに、特定の記号列が割り当てられており、元のメッセージを記号列へ変換する暗号化(エンコード)と、記号列を元のテキストへ戻す復号化(デコード)の2つの処理だけで成り立ちます。 モールス符号対応表(辞
-
Python3で学ぶテキスト分析入門:単語数・文字数・ストップワードなどの集計方法
本記事では、Pythonを使ったファイル操作とテキスト分析の基本について解説します。ファイルはコンピュータシステムに不可欠な存在であり、オペレーティングシステム(OS)自体も膨大な数のファイルによって構成されています。 Pythonが扱えるファイルには大きく分けて「テキストファイル」と「バイナリファイル」の2種類があります。今回はこのうちテキストファイルに焦点を当て、テキストデータから有用な統計情報を抽出するための主要な関数を紹介します。 本記事で解説する主な分析項目は以下の通りです。 単語数 文字数 平均単語長 ストップワード数 特殊文字数 数値データ数 大文字単語数 サンプルとして、
-
Pythonのthreadingモジュールで学ぶスレッドベースの並列処理
スレッドとは何か コンピュータサイエンスにおけるスレッド(Thread)とは、オペレーティングシステム(OS)の一部であるスケジューラによって独立して管理できる、一連の命令(処理の手順)のことです。 スレッディングの主な役割は、複数のスレッドを同時に実行することです。ここでいうスレッドとは、プログラム内の個々のタスクや関数呼び出しを指します。複数のスレッドが同時に動作するといっても、それは別々のマシン上で実行されるという意味ではなく、同じプロセス内で並行して処理が進むことを意味します。 マルチスレッディングが活用される主なケース サブプログラムの出力結果を、メインプログラムの結果と統合する
-
乱数で自動対戦!Pythonで作る〇×(Tic Tac Toe)ゲームの実装方法
この記事では、プレイヤーの操作を一切必要としない「自動〇×ゲーム(Tic Tac Toe)」をPythonで実装する方法を紹介します。盤面へのマークはユーザー入力ではなく乱数によって自動的に配置され、各ターンが終わるたびに盤面の状態が表示されます。どちらかのプレイヤーが勝利した時点でゲームが終了し、盤面がすべて埋まって引き分けになった場合は -1 を返します。 使用するのは、Pythonの標準ライブラリ random と、数値計算ライブラリ NumPy の2つのモジュールです。空きマスの中からランダムに場所を選び、プレイヤー1とプレイヤー2が交互にマークを置いていくシンプルな仕組みです。 サン