-
Pythonで解くワードブレイク問題:動的計画法による文字列分割の判定方法
空でない文字列 s と、空でない単語のリストからなる辞書 wordDict が与えられたとき、s を1つ以上の辞書内の単語を空白で区切った並びに分割できるかどうかを判定する問題を考えてみましょう。この問題には、次のようなルールがあります。 辞書内の同じ単語は、分割の中で何度でも再利用してよい。 辞書には重複する単語が含まれていないものと仮定してよい。 たとえば、文字列 s = applepenapple、辞書 = [apple, pen] の場合、出力は true になります。これは、s を apple pen apple という形に分割できるためです。なお、単語 apple は2回使われ
-
Pythonで最大の数を作る方法:cmp_to_keyを使ったカスタムソートの実装
負でない整数のリストが与えられたとき、それらをうまく並べ替えて、可能な限り大きな数を作ることを考えます。例えば、配列が [10, 2] の場合、最大の数は「210」となります。 解き方のアプローチ この問題を解くには、以下の手順に従います。 まず、すべての整数を文字列に変換します。 2つの数値 x と y を比較する際は、単純な大小比較ではなく、「x を先に置いた場合(x+y)」と「y を先に置いた場合(y+x)」の連結結果を比べます。より大きい数になる順序でソートすることで、最も桁の並びが有利な配置になります。 ソートが完了したら、すべての数値を連結して結果の文字列を返します。 実装
-
Pythonでビットを数える:0〜numまでの各整数の2進数における「1」の個数をO(n)で求める方法
問題概要 非負整数 num が与えられたとき、0 ≤ i ≤ num を満たす各整数 i について、その2進表現に含まれる「1」の個数を計算し、結果をリストとして返すことを考えます。 例えば num = 5 の場合、対象となる数は [0, 1, 2, 3, 4, 5] です。それぞれの数を2進数で表すと次のようになり、1の個数は [0, 1, 1, 2, 1, 2] となります。 数値2進表現1の個数 000 111 2101 3112 41001 51012 解法のアプローチ(動的計画法) この問題は、すでに計算した結果を再利用する動的計画法(DP)の考え方を使うことで、各数値を1
-
【保存版】Python正規表現パターン例まとめ|文字クラス・繰り返し・アンカーを実例で解説
Pythonでテキスト処理を行う際に欠かせないのが正規表現です。本記事では、reモジュールで使える代表的な正規表現パターンをカテゴリ別に一覧形式で解説します。文字クラス、特殊文字、繰り返し、グループ化、後方参照、アンカーまで、実例とともに確認していきましょう。 リテラル文字(そのままの文字) 特別な記号を含まない文字列は、そのまま記述すればリテラルとして扱われます。 番号例と説明 1python「python」という文字列そのものに一致します。 文字クラス 角括弧 [] を使うと、含まれる文字のいずれか1文字にマッチさせられます。^ を先頭に付けると否定(以外)の意味になります。 番
-
Python正規表現で使える括弧「()」付きの特殊構文まとめ
Pythonの正規表現では、括弧 () を使ったさまざまな特殊な構文が用意されています。これらを活用することで、コメントの埋め込みや大文字小文字の区別の制御、グループ化の柔軟な指定などが可能になります。本記事では、代表的な括弧付き特殊構文を一覧形式でわかりやすく解説します。 括弧付き特殊構文の一覧 番号記述例と説明 1R(?#comment)文字列「R」にマッチします。(?#...) 以降に書かれた内容はすべてコメントとして扱われ、マッチングには影響しません。 2R(?i)uby「uby」の部分を大文字・小文字を区別せずにマッチさせます。つまり「Ruby」「ruby」「RUBY」などに
-
PythonのCGIとは?仕組みとサーバー設定方法をわかりやすく解説
CGI(Common Gateway Interface:共通ゲートウェイインターフェース)は、HTTPサーバーなどの情報サーバーと外部のゲートウェイプログラムがやり取りするための標準規格です。現在のバージョンはCGI/1.1であり、CGI/1.2が策定中です。Webブラウジングの流れCGIの概念を理解するために、ハイパーリンクをクリックして特定のWebページやURLを閲覧するときに何が起こるのかを見てみましょう。ブラウザがHTTP Webサーバーに接続し、URL(つまりファイル名)を要求します。WebサーバーはURLを解析してファイル名を探します。該当するファイルが見つかればそれをブラウザへ
-
PythonではじめるCGIプログラミング入門:初めてのCGIスクリプトの作成方法
ここでは、hello.pyという名前のCGIスクリプトへリンクするシンプルな例を紹介します。このファイルは /var/www/cgi-bin ディレクトリに配置されているものとします。CGIプログラムを実行する前に、UNIXコマンドのchmod 755 hello.pyを実行して、ファイルに実行権限を付与しておく必要がある点に注意してください。 サンプルコード #!/usr/bin/python print Content-type:text/html\r\n\r\n print <html> print <head> print <title>Hello
-
PythonのCGI環境変数とは?主要な変数一覧とサンプルコードをわかりやすく解説
CGIプログラムは、実行時にWebサーバーからさまざまな環境変数を受け取ります。これらの環境変数には、クライアントのIPアドレスやブラウザの種類、送信されたデータの形式など、リクエストに関する重要な情報が格納されています。CGIプログラムを開発する際には、これらの変数を適切に活用することが不可欠です。 主なCGI環境変数の一覧 以下に、CGIプログラムからアクセスできる代表的な環境変数とその説明をまとめました。 番号変数名と説明 1CONTENT_TYPEコンテンツのデータ型(MIMEタイプ)。クライアントがファイルアップロードなど、添付コンテンツをサーバーへ送信する際に使用され
-
PythonでGETメソッドを使用して情報を渡す方法【CGIプログラミング入門】
GETメソッドとはGETメソッドは、エンコードされたユーザー情報をページリクエストに付加して送信する方式です。ページのURLとエンコードされた情報は「?」記号で区切られます。https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2GETメソッドは、ブラウザからWebサーバーへ情報を渡す際のデフォルトの方法であり、送信した内容はブラウザのアドレスバー(Locationボックス)に長い文字列として表示されます。そのため、パスワードなどの機密情報をサーバーに送る場合には、GETメソッドは絶対に使用しないでください。また、GET
-
PythonでPOSTメソッドを使ってCGIプログラムに情報を渡す方法
CGIプログラムへ情報を渡す方法としては、POSTメソッドの方が一般的により信頼性が高いとされています。POSTメソッドは、GETメソッドとまったく同じ形式でデータをパッケージ化しますが、URLの「?」以降にテキスト文字列として付加して送信するのではなく、独立したメッセージとして送り出す点が異なります。このメッセージは、標準入力(stdin)を通じてCGIスクリプトへ渡されます。POSTメソッドの主な特徴送信データがURLに表示されないため、GETメソッドよりも安全性が高いURLの長さ制限を受けないため、大量のデータも送信できるデータはリクエストボディに格納され、標準入力経由でCGIスクリプト
-
PythonでチェックボックスのデータをCGIプログラムに渡す方法
チェックボックスは、複数の選択肢の中から同時に複数の項目を選択できるようにしたい場合に使用するUI要素です。ラジオボタンが「単一選択」であるのに対し、チェックボックスはオン・オフを個別に切り替えられる点が特徴です。 HTMLフォームの例 以下は、2つのチェックボックスを含むフォームのHTMLコード例です。 <form action = /cgi-bin/checkbox.cgi method = POST target = _blank> <input type = checkbox name = maths value = on /> Maths <input
-
PythonでラジオボタンのデータをCGIプログラムに渡す方法
ラジオボタンは、複数の選択肢の中から1つだけを選択させたい場合に使われるフォーム部品です。同じname属性を持つラジオボタンは1つのグループとして扱われ、その中で選択できるのは常に1項目のみという特徴があります。複数選択が可能なチェックボックスとの大きな違いはこの点です。 HTMLフォームの記述例 まず、2つのラジオボタンを含むフォームのHTMLコード例を見てみましょう。 <form action = "/cgi-bin/radiobutton.py" method = "post" target = "_blank">
-
Pythonでテキストエリア(TEXTAREA)のデータをCGIプログラムに渡す方法
複数行のテキストデータをCGIプログラムに送信したい場合には、HTMLのTEXTAREA要素を使用します。TEXTAREAは、ユーザーが自由に複数行の文章を入力できる入力欄を提供し、その内容は通常のテキストフィールドと同じようにCGIプログラムへ渡されます。 TEXTAREAを使ったフォームのHTMLコード例 以下は、TEXTAREAボックスを含むフォームのHTMLコード例です。 <form action = "/cgi-bin/textarea.py" method = "post" target = "_blank">
-
ドロップダウンボックスのデータをPythonのCGIプログラムへ渡す方法
ドロップダウンボックスは、多くの選択肢の中から1つだけを選択させたい場合に使用するフォーム部品です。アンケートや設定画面など、限られた項目の中からユーザーに選ばせたい場面でよく利用されます。 HTMLフォームの例 以下は、ドロップダウンボックスを1つ持つフォームのHTMLコード例です。 <form action = "/cgi-bin/dropdown.py" method = "post" target = "_blank"> <select name = "dropdown"> <
-
Python CGIでCookieを使う方法:仕組みと基本構造を解説
HTTPプロトコルは「ステートレス(状態を保持しない)」なプロトコルです。しかし、商用Webサイトでは、複数のページにまたがってセッション情報を維持する必要があります。たとえば、ユーザー登録は多くのページを経由して初めて完了するものです。では、ユーザーのセッション情報をすべてのWebページ間でどのように維持すればよいのでしょうか? こうした場面で最も効率的なのがCookieの活用です。Cookieを使えば、訪問者の好みや購入履歴、コミッション情報など、より快適な閲覧体験の提供やサイト統計の収集に必要なデータを記録・追跡できます。 Cookieの仕組み サーバーは、Cookieという形式で訪問者
-
PythonでCookieを設定する方法をわかりやすく解説
ブラウザへCookieを送信するのは非常に簡単です。Cookieは、Content-typeフィールドよりも先に、HTTPヘッダーとともに送信されます。ここでは、UserIDとPasswordをCookieとして設定する場合を例に、その手順を説明します。 サンプルコード #!/usr/bin/python print Set-Cookie:UserID = XYZ;\r\n print Set-Cookie:Password = XYZ123;\r\n print Set-Cookie:Expires = Tuesday, 31-Dec-2007 23:12:40 GMT;\r\n print
-
PythonでCookieを取得する方法|HTTP_COOKIE環境変数を使った実装例
Webアプリケーション開発において、すでに設定されているCookie(クッキー)をすべて取得するのは非常に簡単です。CGIプログラムでは、Cookieは環境変数 HTTP_COOKIE に格納されており、次のような形式で保存されています。key1 = value1;key2 = value2;key3 = value3....つまり、複数のCookieがセミコロン(;)で区切られ、それぞれが「キー = 値」のペアとして表現されています。この文字列を解析することで、必要なCookieの値を取り出せます。Cookieを取得するサンプルコード以下は、環境変数 HTTP_COOKIE からCookie
-
Pythonでファイルアップロードを実装する方法|HTMLフォームとCGIスクリプトの基本
ファイルアップロードの基本仕組み Webブラウザからサーバーへファイルをアップロードするには、HTMLフォームのenctype属性をmultipart/form-dataに設定する必要があります。この指定により、フォームデータが通常のテキストではなくバイナリ形式で送信されるようになります。また、type=fileを指定したinputタグを配置すると、「参照(Browse)」ボタンが表示され、ユーザーがローカル環境からファイルを選択できるようになります。 アップロード用HTMLフォームの作成 以下は、ファイルアップロード用のシンプルなHTMLフォームの例です。 <html> <
-
Pythonでファイルダウンロードダイアログを表示させる方法【HTTPヘッダーの設定】
はじめにWebアプリケーションを開発していると、リンクをクリックした際にファイルの中身をブラウザ上に表示するのではなく、「ファイルのダウンロード」ダイアログボックスをポップアップ表示させたいケースがあります。この動作は、HTTPヘッダーを適切に設定するだけで簡単に実現できます。ここで使うHTTPヘッダーは、通常のHTML出力時に指定するものとは異なる点に注意してください。ダウンロードダイアログを実現する仕組みポイントは次の2つのHTTPヘッダーです。Content-Type: application/octet-stream を指定することで、レスポンスが「バイナリデータ(任意のファイル)」で
-
PythonでMySQLdbをインストールする方法をわかりやすく解説
MySQLdbがインストールされているか確認する 作業を始める前に、まずお使いのマシンにMySQLdbがインストールされているかどうかを確認しましょう。Pythonスクリプトに以下のコードを記述して実行してください。 #!/usr/bin/python import MySQLdb 実行した際に、以下のようなエラーが表示された場合は、MySQLdbモジュールがまだインストールされていないことを意味します。 Traceback (most recent call last): File "test.py", line 3, in <module&