【Python入門】サンプル集

Python3入門者向けに基本文法~応用例(数値計算・機械学習・ゲーム制作等)をサンプルコード付きでまとめています。

【はじめに】Pythonとは

Pythonは欧米で人気なスクリプト言語です。
初心者にも扱いやすい言語で短くて読みやすいコードを書くことが出来ます。
ライブラリも豊富で、数値計算や統計処理をする場合にも有効な言語です。
また、ラズベリーパイなどのIoT機器を使えば電子工作や組み込み系にも使えます。
本記事では、Pythonのバージョン3を中心に入門者向けに基礎から紹介します。

参考記事
1 【Python】主な特徴(メリット・デメリット)
2 ■【Python】できること

【準備】環境構築、プログラムの作成・実行

まずはじめに、「環境構築」や「プログラムの作成・実行手順」などについて以下に整理しました。

はじめに
Python環境構築 Windows環境・・・Python環境を構築する方法
■Linux環境(Ubuntu, Rasbian)・・・標準搭載されてるので環境構築不要
Google Colab・・・無料で高性能なクラウド型の開発環境。面倒なインストール作業不要。
書き方 HelloWorld ■基本構造
コメント コメント日本語コメント
日本語の扱い方 print関数で日本語出力日本語の扱い方(Python2のみ)
その他 Python最速入門(基本文法の記述例)バージョン2と3の違いC言語との記法比較(Cプログラマ向け)

【変数】数値型、文字列型

文字コードや変数の基本的な扱い方について整理しました。

変数(数値型・文字列型)
はじめに 変数の代入文字列の処理・使い方
変数 文字列整数型(int)長整数型(Python2のみ)実数型(float)論理型(bool)複素数型(complex)
数値 2進数、10進数、16進数の相互変換
文字列処理 連結文字列へ変換分割先頭末尾の削除正規表現置換文字列検索大文字⇔小文字
変換 数値→文字列文字列→数値(実数)文字列→数値(整数)文字列のハッシュ化文字・アスキーコードの相互変換

【構造化プログラミング】関数、オブジェクト指向、標準入出力、ファイル処理

構造化プログラミング、関数、オブジェクト指向の基礎について以下に整理しました。

構造化プログラミング
条件分岐 if文elif文
繰り返し for文for文+ range関数for文+in演算子for文+enumerate関数while文
他の文 continue文(スキップ)break文(繰り返し終了)pass文(何もしない)del文(変数・オブジェクトの削除)try-except文(例外処理)import文(ライブラリ読込)with文(終了処理の省略)

Pythonによる関数の定義・使い方について下記に整理しました。

関数の使い方
関数 関数・引数の定義引数定義の違い(値・配列)ローカル変数・グローバル変数コマンドライン引数可変長引数(*args、**kwargs)
特殊関数 exec関数iter・next関数(イテレータ)デコレータ
if name == ‘main’: の意味・使い方

Pythonによるオブジェクト指向について下記に整理しました。
中~大規模なプログラム作成に必要となります。

オブジェクト指向(中~大規模なプログラム作成に必要)
概略 オブジェクト指向とは利点欠点クラス・インスタンスメソッド・プロパティ変数
基本 クラス定義インスタンス生成インスタンスの個数
インスタンス変数 生成値取得代入追加値を渡す(初期化)インスタンスを暗黙的に文字列に変換
クラス変数 クラス変数生成値取得代入追加
メソッド メソッド定義クラスメソッド定義初期化メソッド(コンストラクタ)デストラクタ
クラス継承 クラス継承
モジュール 自作モジュールの作成・読み込み
まとめ Pythonでオブジェクト指向プログラミング

Pythonによる標準入出力について下記に整理しました。

標準入出力の基礎
標準出力 改行あり改行なし
標準入力 全般複数行(input)複数行(readlines)
コマンドライン引数

Pythonによるファイル処理について下記に整理しました。

ファイル処理の基礎
テキスト テキストファイルの読込タブ区切りでテキストファイルの読込テキストファイルの書込文字コードを指定してテキストファイルに書込
バイナリ バイナリファイルの読み書きBASE64でエンコード・デコード
圧縮・解凍 ファイルのZIP圧縮・解凍フォルダ内全てのZIPファイルを解凍
パス 拡張子取得存在判定ファイル判定フォルダ判定
CSV 書込(1行)書込(複数行)データ更新
XML xml解析
ライブラリ csvjson
抽出 ファイル名・フォルダ名の一覧取得指定した拡張子のファイル一覧ファイルの文字コード判別
削除 ファイル・フォルダの一括削除
変換 画像⇔PDF
セキュリティ データの暗号化・復号化

【データ処理】リスト、タプル、辞書、セット、配列(NumPy)

Pythonでは、大量のデータを格納・操作するためのオブジェクトとして、「リスト」「タプル」「辞書」型の3種類が用意されています。
また、外部ライブラリでは、配列に相当するものとして、NumPy型オブジェクトがあります。
それぞれの違いや基本操作について以下に整理しました。

項目
概要 リスト・タプル・辞書・配列の違い
リスト リストの使い方要素取得末尾の要素取得スライスで要素取得末尾に要素追加任意の場所に要素追加要素の削除リストの要素確認in演算子インデックス取得要素を順に取得要素+インデックスを順に取得map関数filter関数順序反転・ソート
タプル 使い方連結繰り返し要素取得部分取得要素数取得リスト→タプル
辞書 使い方値取得要素数取得連結データ追加代入要素削除(del, pop)全要素削除キーの存在確認全てのキー・値取得タプル・リストに変換
セット セット型(set)の使い方
配列 NumPyの使い方まとめ

【数値計算】統計処理、機械学習、画像処理など

Pythonによる数値計算について整理しました。
大量のデータを扱ったり本格的な数値計算をする場合は、用途に応じてライブラリを使います。

数値計算の基礎
基本 四捨五入絶対値べき乗平方根explog(底10)log(底e)ラジアン→度度→ラジアン割り算(商・余り)
三角関数 正弦(sin)余弦(cos)正接(tan)逆正弦(asin)逆余弦(acos)逆正接(atan)
統計量 最大値最小値合計値平均値
乱数 乱数整数乱数実数乱数配列シャッフル配列要素のランダム抽出
解の算出 2分法ニュートン法
微分方程式 オイラー法 ■修正オイラー法 ■ルンゲクッタ法

大量のデータを扱ったり、専門性の高い処理を実装する場合は外部ライブラリを積極的に活用しましょう。
数ある数値計算ライブラリの中で最もスタンダードなのは「NumPy」です。

科学計算ライブラリ別・使い方まとめ
数値計算 NumPy(matlab風) ■SciPy(NumPyの拡張)■Pandas(R言語風) ■SymPy(matlab風の記号演算) ■NetCDF4 ■statistics(基本統計量:標準モジュール)
画像処理 OpenCVScikit-imagePillow
機械学習 Keras(深層学習) ■PyTorch(深層学習)Scikit-learnChaiper(深層学習) ■Theano ■Caffe ■TensorFlow(深層学習)
自然言語処理 ■NLTK
形態素解析 MeCab
トピックモデル gensim
制御工学 python-control(matlab風)
シミュレーション ■SimPy ■PyODE (物理演算)
グラフ作成 Matplotlib(matlab、gnuplot風) ■seaborn
その他 ■Basemap(地図)
分野別 機械学習画像処理音声信号処理制御工学ロボット工学数値計算株価予測ビットコイン分析物理シミュレーション

【応用】ゲーム制作、GUI、システム、ネットワーク、Webサーバー

Pythonを用いた「ゲーム制作」「システム」「ネットワーク」「Webサーバー」について整理しました。

ゲーム制作
Pygame ブロック崩し卓球ゲーム(PONG)
ライブラリ PyGamePyOpenGL(グラフィックス)
まとめ Pythonでゲームプログラミング
GUI
概要 GUIライブラリの比較
ライブラリ kivytkinter ■Flexx ■wxPython ■PyQt5
システム関連
日時 現在日付(年月日)現在時間(時分秒ミリ秒)日付の増減1年分の日付うるう年の判定・回数カウントtime型→datetime型
PC情報 OS名CPU・メモリの利用率タスクマネージャーのプロセスを表示
Python 【Python】バージョン取得【Python】インストール済みモジュール一覧を取得
コマンド UNIXコマンドの実行
ディレクトリ カレントディレクトリのパスを取得
応用 処理時間の測定
ネットワーク関連
情報取得 ローカルIPの取得グローバルIPの取得ホスト名の取得サービス名の取得リモートホスト名からIPアドレスを取得
ソケット通信 1対1チャット(TCP/IP)
FTPサーバー ファイルアップロード
ネットワーク試験 ping試験(死活監視)
HTML解析 HTML取得HTML取得(日本語)User-Agent設定HTML解析まとめ
Webテスト URLの存在確認
応用例 お天気情報の取得
まとめ Pythonでネットワークプログラミング入門
Webサーバー・CGI関連
Webフレームワーク Flask入門Django入門
Webスクレイピング Webスクレイピング入門・ライブラリ比較BeautifulSoup4入門Selenium入門(ブラウザ操作)既定ブラウザでURL開く任意ブラウザでURL開く
XAMPP 実行方法HTML出力DB作成テーブル作成CSV読込CSV読込(日本語)パスワード設定設定後エラー
MySQL ライブラリ一覧mysql-connector導入接続・切断データ取得データ追加データ更新データ削除まとめ
SQLite DB接続テーブル作成データ追加 データ追加(複数行)データ取得データ更新データ削除 ■まとめ
メールサーバー Gメールの送信

【その他】電子工作(ラズベリーパイ・Arduino)、便利ツール

電子工作(ラズベリーパイ・Arduino)への応用や、役に立つツールやサイトについて整理しました。

電子工作への応用
ラズパイ ラズベリーパイ+Pythonで電子工作入門
Arduino Arduinoを遠隔操作
便利なツールやサイトなど
コーディング規約 ■コーディング規約とは ■命名規則(PEP-8)
現在のパッケージ名の取得現在のモジュール名の取得現在のファイル名の取得
便利ツール Try JupyterSageMathCloudideonePython3→exe変換Jupyter NotebookGithub:Python
SNS QittaTwitterヤフー知恵袋
おすすめサイト note.nkmk.me
関連記事