狠狠撸

狠狠撸Share a Scribd company logo
Python演習
1. はじめに
PythonとFortranの比較
? Fortranは
? 各種計算(特に行列、ベクトル)が高速
? 数値計算のライブラリが充実
? 事前に明示的なコンパイルが必要
? →計算プログラムの作成に適している
? Pythonは
? 汎用的な言語(何でもできるが計算は遅い)
? 特に文字列の処理がFortranに比べ容易
? 事前のコンパイルを必要としない
? →入力の整形や解析プログラムの作成に適している
2016/5/4現在の最新版
? Pythonは2系と3系が共存
? Python2の最新版→2.7.11
? Python3の最新版→3.5.1
? この演習では3系に準拠します
? 事前にパスを通しておいてください
実行方法
? 1. ファイル(file)に作成したプログラムを実行
? コマンド: python3 some_program.py
? 何回も使うプログラムに向く
? 2. ターミナル(REPL)上で直接実行
? コマンド: python3
? 実行すると>>>と表示→プログラムを入力
? 返り値のある式を実行するとそれが表示される
? ライブラリなどの確認に使う
? この演習では主に2の方法を用います
? 実用上は1が重要なので両方使ってみてください。
? 演習でfile(REPL)とある→1(2)を使って下さい
演習1―Hello, World (file, REPL)
? 以下の内容をtest01.pyに記述してください
? print("Hello, World")
? python3 test01.pyとコマンドを入力して下さい
? Hello, Worldと表示されるはず
? python3とコマンドを実行して下さい
? >>>と表示される
? print("Hello, World")と入力して下さい
? Hello, Worldと表示されるはず
凡例
? このテキストでの書き方
? コメント及び何かの値は「#」に続けて書きます
? x = "Hello, World!" # xに"Hello, World!"を代入
? "Show some value" # "Show some value"
? 出力を記述する場合は「# =>」に続けて書きます
? print("Hello, World") # => Hello, World!
? print(1 + 2) # => 3
? 必要に応じて変える値(変数など)は斜体で書きます
? print(str) # strは必要に応じて書き換える
? str.rstrip() # メソッドのレシーバは斜体
? 書き換えない値(パッケージなど)は立体で書きます
? re.compile("?d+") # reは正規表現のパッケージ
文法1―書き始め
? いきなり書き始め、いきなり終わる
? program ~ end programは必要ない
? 変数の宣言もしない(変数は自動的に宣言される)
? 画面への出力
? print(出力したいもの)
? 配列などの表示も可能
? 例: print("Hello, World")
? コメント
? コメントは#から行末まで
? 複数行コメントは'''~'''または"""~"""
? 例: print("Hello, World") # Comment
文法2―変数
? 変数
? Fortranと同様に変数が使用できる
? 宣言は不要で、変数に型がない(数値も文字列もOK)
? 但し値には型(クラス)がある(int, float, complex, …)
? 代入と参照
? 代入は「変数 = 式」の形で使用
? 左辺を省略して式の値を捨てることも可能
? 参照は必要な場所で変数を書けばよい
? 例: x = 1
? コレクション(配列)への代入と参照
? 添字は[]で書く(Fortranは())
? 添字は0から始まるので注意
値(変数に代入できるもの)の例
? 数値
? 整数(int) 2, -1など小数点を持たない数
? 実数(float) 3.14など小数点を持つ数
? 複素数(complex) 1+2jなど虚数単位jを持つ数
? 文字列
? 文字列(str) 'test'など(''や""で囲む)
? コレクション(データの集まり≒配列)
? リスト(list) [1.0, 2.0]など(要素や大きさが可変)
? タプル(tuple) ('May', '1')など(要素や大きさが不変)
? 辞書(dict) {'key': 'value'}など(keyとvalueの対応)
文法3―関数とメソッドの使用
? 関数の呼び出し
? function(arg1, arg2, …)で関数を呼び出す
? 例: n = len("one") # len(str)はstrの長さを返す関数
? パッケージ関数
? 関数の多くは「パッケージ」内で定義されている
? import packageでpackageを使用可能にして
? package.function(arg1, arg2, …)で使用する
? 例: pi = 4.0 * math.atan(1.0) # piに4 * tan-1(1)を代入
? メソッド
? 特定の値(オブジェクト)を操作する関数
? obj.method(arg1, arg2, …)で使用する
? 例: "capital".upper() # "capital"を全て大文字にする
文法4―ブロック
? ブロックはインデントで指定
? ifやwhileのブロックはインデント(4スペース推奨)
? ブロックが終了したらインデントを戻す
? ブロックで何もしない場合はpassを使う
? 例(回文数を数える)
n = 0 # カウンタの初期化
for i in range(1, 10000): # 1から10000までループ
????if str(i) == str(i)[::-1]: # 反転しても同じなら
????????n += 1 # 回文数ならnを1増やす
????else: # 違えば
????????pass # 何もしない
print(n) # => 198
制御構文
? 条件分岐とループ
? if cond: condが真ならばブロックを実行
? while cond: condが真の間ブロックをループ
? for var in iter: iterの各要素でブロックをループ
? 関数
? def hoge(vars): 関数定義
? lambda vars: ラムダ式(無名関数)の定義
文法5―複数行
? 途中改行
? 途中改行はバックスラッシュ(Windowsでは?)
? function_with_tooooooooooooooo_long name(?
arguments)
? マルチステートメント(複数行を一行に)
? x = 1; y = 2のようにセミコロンで区切る
? 一行if
? if cond: stmtとコロンの後ろに続けて書く
? 例: if 1 < 2: print('True')
? 多重代入(複数の変数に一度に代入)
? 「変数, 変数, … = 式, 式, …」とすると一度に代入
演習2―変数と出力(REPL)
1. 変数oneに1を代入して下さい
2. 変数piに3.14を代入して下さい
3. 変数textに"text"を代入して下さい
4. 変数north,eastに35.7,139.7を代入して下さい
ただし1行で記述して下さい
5. one,pi,text,north,eastの値を表示して下さい
ここからは次回以降の
内容を簡単に紹介します。
研究におけるPythonの
運用を説明します。
想定ユースケース
? ログ解析
? 量子化学計算などで得られたデータの処理
? →人間用のログファイルからデータを抽出、加工
? 解析例
? 以下のファイルを開いて励起エネルギーを計算
? 出力はeV単位で行う
? 抽出の時は関係ないデータを拾わないように注意
? 計算結果の例
? Molpro2012のログファイルより抜粋
!MCSCF STATE 1.1 Energy -77.591982080137
(省略)
!MCSCF STATE 2.1 Energy -77.213738400957
例―MCSCFのエネルギー
import sys # 標準入力の読込準備
for l in sys.stdin(): # 標準入力を1行づつlに代入
if not ('MCSCF' in l ? # lの中にMCSCFと
and 'Energy' in l): # Energyがなければ
continue # 次の行へ
token = l.rstrip().split() # lを改行除去し空白で分割
state = token[2] # 準位は第2トークン
energy = token[4] # エネルギーは第4トークン
print(state, energy) # 準位とエネルギーを出力
解析の流れ
1. ファイルを一行づつ読み込み
2. 必要な行を抽出
3. 必要な列を抽出
4. 抽出した
データを
変換
5. 出力
1. ファイルから1行づつ読み込む
? for l in sys.stdin:
? lに標準入力の内容を1行づつ代入してループ
? リダイレクト(「<」)を使うとファイルを開ける
? 読み込んだ行には改行が付いている
? l.rstrip()
? lのコピーを作ってから改行をはがして返す
? l自体の改行を削るには「l = l.rstrip()」
? 例(cat: ファイルをそのまま表示)
for l in fileinput.input(): # ファイルを1行づつ
print(l.rstrip()) # 改行削除し1行表示
2. 必要な行を抽出
? if 'keyword' in l:
? keywordがlの中にあればブロックを実行する
? pythonのブロックはインデント(endifは不要)
? and, or, not
? "keyword" in lは単に条件を指示している
? →and, or, notで「かつ、または、でない」を表せる
? continue
? その外側の(for)ループから抜ける
? 例(キーワード検索)
for l in sys.stdin:
if 'Energy' in l:
print(l.rstrip())
3. 必要な列を抽出
? l.rstrip().split()
? l.rstrip()はlの末尾の改行除去、.split()が分割
? 分割された文字列のリスト(配列)ができる
? リストの先頭は「0番」なので注意!
? また、リストの参照は「list[i]」で行う
? 例(1列目だけ表示)
for l in sys.stdin:
token = l.rstrip().split()
print(token[0])
4. 抽出したデータを変換
? ここが解析プログラムの本体です
? 変換の方法は目的によっていろいろあります
? データを見やすくする
? データの簡単な計算を行う
? …
? しかし、「定石」が存在しません
? そのため、様々な機能を知る必要があります
? 今後の演習で「道具」を紹介していきます
? 目次
? 第1回: 初めに
? 第2回: 数値計算と文字列、正規表現
? 第3回: コレクション(リスト、タプル、辞書)
? 第4回: 制御構文とパッケージ
5. 出力
? 画面への出力
? print(出力したいもの)
? 配列などの表示も可能です
? 例(cat: ファイルをそのまま表示)
for l in fileinput.input(): # ファイルを1行づつ
print(l.rstrip()) # 改行削除し1行表示
参考
? 公式サイト
? トップページ
? http://www.python.jp/
? チュートリアル
? http://docs.python.jp/3/tutorial/index.html
? ライブラリリファレンス
? http://docs.python.jp/3/library/index.html
? 書籍
? 入門Python3(Bill Lubanovic et al., O'reilly, 2015)
? 実践Python3(Mark Summerfield et al., O'reilly, 2015)
? Molpro
? http://www.molpro.net

More Related Content

What's hot (19)

c辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだ
c辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだc辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだ
c辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだ
Genya Murakami
?
Sharing Deep Dive
Sharing Deep DiveSharing Deep Dive
Sharing Deep Dive
Takaaki Suzuki
?
高度に最适化された移植可能なメモリマネージャ
高度に最适化された移植可能なメモリマネージャ高度に最适化された移植可能なメモリマネージャ
高度に最适化された移植可能なメモリマネージャ
DADA246
?
闯补惫补で作る超简易虫86エミュレータ
闯补惫补で作る超简易虫86エミュレータ闯补惫补で作る超简易虫86エミュレータ
闯补惫补で作る超简易虫86エミュレータ
Daisuke Kamikawa
?
Altanative macro
Altanative macroAltanative macro
Altanative macro
Motohiro KOSAKI
?
搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)
搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)
搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
?
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3
xibbar
?
Inside FastEnum
Inside FastEnumInside FastEnum
Inside FastEnum
Takaaki Suzuki
?
基礎構文班 11回目 ファイル入出力 型変換 問題やる回
基礎構文班 11回目 ファイル入出力 型変換 問題やる回基礎構文班 11回目 ファイル入出力 型変換 問題やる回
基礎構文班 11回目 ファイル入出力 型変換 問題やる回
XMLProJ2014
?
コードで感じる碍辞迟濒颈苍入门
コードで感じる碍辞迟濒颈苍入门コードで感じる碍辞迟濒颈苍入门
コードで感じる碍辞迟濒颈苍入门
iPride Co., Ltd.
?
続?厂贰颁顿マシン
続?厂贰颁顿マシン続?厂贰颁顿マシン
続?厂贰颁顿マシン
t-sin
?
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
kunihikokaneko1
?
笔测迟丑辞苍の非同期処理を始める前に
笔测迟丑辞苍の非同期処理を始める前に笔测迟丑辞苍の非同期処理を始める前に
笔测迟丑辞苍の非同期処理を始める前に
koralle
?
笔测迟丑辞苍が动く仕组み(の概要)
笔测迟丑辞苍が动く仕组み(の概要)笔测迟丑辞苍が动く仕组み(の概要)
笔测迟丑辞苍が动く仕组み(の概要)
Yoshiaki Shibutani
?
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
?
Tremaとtrema edgeの違い
Tremaとtrema edgeの違いTremaとtrema edgeの違い
Tremaとtrema edgeの違い
hiroshi oshiba
?
【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门
sandai
?
c辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだ
c辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだc辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだ
c辞苍蝉迟别虫辫谤関数はコンパイル时処理。これはいい。実行时が霞んで见える。肠辫耻の娇声が闻こえてきそうだ
Genya Murakami
?
高度に最适化された移植可能なメモリマネージャ
高度に最适化された移植可能なメモリマネージャ高度に最适化された移植可能なメモリマネージャ
高度に最适化された移植可能なメモリマネージャ
DADA246
?
闯补惫补で作る超简易虫86エミュレータ
闯补惫补で作る超简易虫86エミュレータ闯补惫补で作る超简易虫86エミュレータ
闯补惫补で作る超简易虫86エミュレータ
Daisuke Kamikawa
?
搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)
搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)
搁测耻の游び方(辫颈肠补8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
?
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3
xibbar
?
基礎構文班 11回目 ファイル入出力 型変換 問題やる回
基礎構文班 11回目 ファイル入出力 型変換 問題やる回基礎構文班 11回目 ファイル入出力 型変換 問題やる回
基礎構文班 11回目 ファイル入出力 型変換 問題やる回
XMLProJ2014
?
コードで感じる碍辞迟濒颈苍入门
コードで感じる碍辞迟濒颈苍入门コードで感じる碍辞迟濒颈苍入门
コードで感じる碍辞迟濒颈苍入门
iPride Co., Ltd.
?
続?厂贰颁顿マシン
続?厂贰颁顿マシン続?厂贰颁顿マシン
続?厂贰颁顿マシン
t-sin
?
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
kunihikokaneko1
?
笔测迟丑辞苍の非同期処理を始める前に
笔测迟丑辞苍の非同期処理を始める前に笔测迟丑辞苍の非同期処理を始める前に
笔测迟丑辞苍の非同期処理を始める前に
koralle
?
笔测迟丑辞苍が动く仕组み(の概要)
笔测迟丑辞苍が动く仕组み(の概要)笔测迟丑辞苍が动く仕组み(の概要)
笔测迟丑辞苍が动く仕组み(の概要)
Yoshiaki Shibutani
?
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
?
Tremaとtrema edgeの違い
Tremaとtrema edgeの違いTremaとtrema edgeの違い
Tremaとtrema edgeの違い
hiroshi oshiba
?
【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#5迟丑】12ステップで作る组込み翱厂自作入门
sandai
?

Viewers also liked (20)

奥颈苍诲辞飞蝉で笔测迟丑辞苍
奥颈苍诲辞飞蝉で笔测迟丑辞苍奥颈苍诲辞飞蝉で笔测迟丑辞苍
奥颈苍诲辞飞蝉で笔测迟丑辞苍
drillan
?
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
?
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
Etsuji Nakai
?
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
?
S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3
Takeshi Akutsu
?
S03 t0 get_started
S03 t0 get_startedS03 t0 get_started
S03 t0 get_started
Takeshi Akutsu
?
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
Tetsuya Morimoto
?
Outside and inside of PyCon JP 2016
Outside and inside of PyCon JP 2016Outside and inside of PyCon JP 2016
Outside and inside of PyCon JP 2016
Takanori Suzuki
?
Python 機械学習入門
Python 機械学習入門Python 機械学習入門
Python 機械学習入門
孝之 鈴木
?
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
?
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
骋尘补颈濒と笔测迟丑辞苍でイベント管理
骋尘补颈濒と笔测迟丑辞苍でイベント管理骋尘补颈濒と笔测迟丑辞苍でイベント管理
骋尘补颈濒と笔测迟丑辞苍でイベント管理
drillan
?
Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章
Makoto Kawano
?
実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]
hixi365
?
笔测迟丑辞苍で别虫肠别濒
笔测迟丑辞苍で别虫肠别濒笔测迟丑辞苍で别虫肠别濒
笔测迟丑辞苍で别虫肠别濒
株式会社 システムヨシイ
?
ソーティングと贪欲法
ソーティングと贪欲法ソーティングと贪欲法
ソーティングと贪欲法
京大 マイコンクラブ
?
ネットワーク概論 サーバの構築理論
ネットワーク概論 サーバの構築理論ネットワーク概論 サーバの構築理論
ネットワーク概論 サーバの構築理論
Takahiro Komatsu
?
计算量とオーダー
计算量とオーダー计算量とオーダー
计算量とオーダー
京大 マイコンクラブ
?
奥颈苍诲辞飞蝉で笔测迟丑辞苍
奥颈苍诲辞飞蝉で笔测迟丑辞苍奥颈苍诲辞飞蝉で笔测迟丑辞苍
奥颈苍诲辞飞蝉で笔测迟丑辞苍
drillan
?
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
?
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
Etsuji Nakai
?
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
?
S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3
Takeshi Akutsu
?
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
Tetsuya Morimoto
?
Outside and inside of PyCon JP 2016
Outside and inside of PyCon JP 2016Outside and inside of PyCon JP 2016
Outside and inside of PyCon JP 2016
Takanori Suzuki
?
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
?
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
骋尘补颈濒と笔测迟丑辞苍でイベント管理
骋尘补颈濒と笔测迟丑辞苍でイベント管理骋尘补颈濒と笔测迟丑辞苍でイベント管理
骋尘补颈濒と笔测迟丑辞苍でイベント管理
drillan
?
Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章
Makoto Kawano
?
実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数?文字列探索?簡単なソート]
hixi365
?
ネットワーク概論 サーバの構築理論
ネットワーク概論 サーバの構築理論ネットワーク概論 サーバの構築理論
ネットワーク概論 サーバの構築理論
Takahiro Komatsu
?

Similar to 笔测迟丑辞苍勉强会1-はじめに (20)

Polyphony の並列化
Polyphony の並列化Polyphony の並列化
Polyphony の並列化
ryos36
?
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
icchy
?
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
?
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
Susisu
?
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
David Buck
?
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
Yoshifumi Yamaguchi
?
第1回勉强会スライド
第1回勉强会スライド第1回勉强会スライド
第1回勉强会スライド
koturn 0;
?
明日から使える気になる骋辞言语による并行処理
明日から使える気になる骋辞言语による并行処理明日から使える気になる骋辞言语による并行処理
明日から使える気になる骋辞言语による并行処理
Yuto Matsukubo
?
颁言语讲习会2
颁言语讲习会2颁言语讲习会2
颁言语讲习会2
odenhadengaku
?
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26
Akihiro Nishimura
?
第1回辫测迟丑辞苍勉强会
第1回辫测迟丑辞苍勉强会第1回辫测迟丑辞苍勉强会
第1回辫测迟丑辞苍勉强会
Yoshio Shimomura
?
第2回勉强会スライド
第2回勉强会スライド第2回勉强会スライド
第2回勉强会スライド
koturn 0;
?
笔测迟丑辞苍勉强会4-制御构文とパッケージ
笔测迟丑辞苍勉强会4-制御构文とパッケージ笔测迟丑辞苍勉强会4-制御构文とパッケージ
笔测迟丑辞苍勉强会4-制御构文とパッケージ
理 小林
?
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
和弘 井之上
?
颁#勉强会
颁#勉强会颁#勉强会
颁#勉强会
hakugakucafe
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
Mono is Dead
Mono is DeadMono is Dead
Mono is Dead
melpon
?
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
?
Polyphony の並列化
Polyphony の並列化Polyphony の並列化
Polyphony の並列化
ryos36
?
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
icchy
?
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
?
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
Susisu
?
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
David Buck
?
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
Yoshifumi Yamaguchi
?
第1回勉强会スライド
第1回勉强会スライド第1回勉强会スライド
第1回勉强会スライド
koturn 0;
?
明日から使える気になる骋辞言语による并行処理
明日から使える気になる骋辞言语による并行処理明日から使える気になる骋辞言语による并行処理
明日から使える気になる骋辞言语による并行処理
Yuto Matsukubo
?
Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26Effective Modern C++ 勉強会 Item26
Effective Modern C++ 勉強会 Item26
Akihiro Nishimura
?
第1回辫测迟丑辞苍勉强会
第1回辫测迟丑辞苍勉强会第1回辫测迟丑辞苍勉强会
第1回辫测迟丑辞苍勉强会
Yoshio Shimomura
?
第2回勉强会スライド
第2回勉强会スライド第2回勉强会スライド
第2回勉强会スライド
koturn 0;
?
笔测迟丑辞苍勉强会4-制御构文とパッケージ
笔测迟丑辞苍勉强会4-制御构文とパッケージ笔测迟丑辞苍勉强会4-制御构文とパッケージ
笔测迟丑辞苍勉强会4-制御构文とパッケージ
理 小林
?
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
和弘 井之上
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
Mono is Dead
Mono is DeadMono is Dead
Mono is Dead
melpon
?
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
?

Recently uploaded (11)

【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?

笔测迟丑辞苍勉强会1-はじめに

  • 2. PythonとFortranの比較 ? Fortranは ? 各種計算(特に行列、ベクトル)が高速 ? 数値計算のライブラリが充実 ? 事前に明示的なコンパイルが必要 ? →計算プログラムの作成に適している ? Pythonは ? 汎用的な言語(何でもできるが計算は遅い) ? 特に文字列の処理がFortranに比べ容易 ? 事前のコンパイルを必要としない ? →入力の整形や解析プログラムの作成に適している
  • 3. 2016/5/4現在の最新版 ? Pythonは2系と3系が共存 ? Python2の最新版→2.7.11 ? Python3の最新版→3.5.1 ? この演習では3系に準拠します ? 事前にパスを通しておいてください
  • 4. 実行方法 ? 1. ファイル(file)に作成したプログラムを実行 ? コマンド: python3 some_program.py ? 何回も使うプログラムに向く ? 2. ターミナル(REPL)上で直接実行 ? コマンド: python3 ? 実行すると>>>と表示→プログラムを入力 ? 返り値のある式を実行するとそれが表示される ? ライブラリなどの確認に使う ? この演習では主に2の方法を用います ? 実用上は1が重要なので両方使ってみてください。 ? 演習でfile(REPL)とある→1(2)を使って下さい
  • 5. 演習1―Hello, World (file, REPL) ? 以下の内容をtest01.pyに記述してください ? print("Hello, World") ? python3 test01.pyとコマンドを入力して下さい ? Hello, Worldと表示されるはず ? python3とコマンドを実行して下さい ? >>>と表示される ? print("Hello, World")と入力して下さい ? Hello, Worldと表示されるはず
  • 6. 凡例 ? このテキストでの書き方 ? コメント及び何かの値は「#」に続けて書きます ? x = "Hello, World!" # xに"Hello, World!"を代入 ? "Show some value" # "Show some value" ? 出力を記述する場合は「# =>」に続けて書きます ? print("Hello, World") # => Hello, World! ? print(1 + 2) # => 3 ? 必要に応じて変える値(変数など)は斜体で書きます ? print(str) # strは必要に応じて書き換える ? str.rstrip() # メソッドのレシーバは斜体 ? 書き換えない値(パッケージなど)は立体で書きます ? re.compile("?d+") # reは正規表現のパッケージ
  • 7. 文法1―書き始め ? いきなり書き始め、いきなり終わる ? program ~ end programは必要ない ? 変数の宣言もしない(変数は自動的に宣言される) ? 画面への出力 ? print(出力したいもの) ? 配列などの表示も可能 ? 例: print("Hello, World") ? コメント ? コメントは#から行末まで ? 複数行コメントは'''~'''または"""~""" ? 例: print("Hello, World") # Comment
  • 8. 文法2―変数 ? 変数 ? Fortranと同様に変数が使用できる ? 宣言は不要で、変数に型がない(数値も文字列もOK) ? 但し値には型(クラス)がある(int, float, complex, …) ? 代入と参照 ? 代入は「変数 = 式」の形で使用 ? 左辺を省略して式の値を捨てることも可能 ? 参照は必要な場所で変数を書けばよい ? 例: x = 1 ? コレクション(配列)への代入と参照 ? 添字は[]で書く(Fortranは()) ? 添字は0から始まるので注意
  • 9. 値(変数に代入できるもの)の例 ? 数値 ? 整数(int) 2, -1など小数点を持たない数 ? 実数(float) 3.14など小数点を持つ数 ? 複素数(complex) 1+2jなど虚数単位jを持つ数 ? 文字列 ? 文字列(str) 'test'など(''や""で囲む) ? コレクション(データの集まり≒配列) ? リスト(list) [1.0, 2.0]など(要素や大きさが可変) ? タプル(tuple) ('May', '1')など(要素や大きさが不変) ? 辞書(dict) {'key': 'value'}など(keyとvalueの対応)
  • 10. 文法3―関数とメソッドの使用 ? 関数の呼び出し ? function(arg1, arg2, …)で関数を呼び出す ? 例: n = len("one") # len(str)はstrの長さを返す関数 ? パッケージ関数 ? 関数の多くは「パッケージ」内で定義されている ? import packageでpackageを使用可能にして ? package.function(arg1, arg2, …)で使用する ? 例: pi = 4.0 * math.atan(1.0) # piに4 * tan-1(1)を代入 ? メソッド ? 特定の値(オブジェクト)を操作する関数 ? obj.method(arg1, arg2, …)で使用する ? 例: "capital".upper() # "capital"を全て大文字にする
  • 11. 文法4―ブロック ? ブロックはインデントで指定 ? ifやwhileのブロックはインデント(4スペース推奨) ? ブロックが終了したらインデントを戻す ? ブロックで何もしない場合はpassを使う ? 例(回文数を数える) n = 0 # カウンタの初期化 for i in range(1, 10000): # 1から10000までループ ????if str(i) == str(i)[::-1]: # 反転しても同じなら ????????n += 1 # 回文数ならnを1増やす ????else: # 違えば ????????pass # 何もしない print(n) # => 198
  • 12. 制御構文 ? 条件分岐とループ ? if cond: condが真ならばブロックを実行 ? while cond: condが真の間ブロックをループ ? for var in iter: iterの各要素でブロックをループ ? 関数 ? def hoge(vars): 関数定義 ? lambda vars: ラムダ式(無名関数)の定義
  • 13. 文法5―複数行 ? 途中改行 ? 途中改行はバックスラッシュ(Windowsでは?) ? function_with_tooooooooooooooo_long name(? arguments) ? マルチステートメント(複数行を一行に) ? x = 1; y = 2のようにセミコロンで区切る ? 一行if ? if cond: stmtとコロンの後ろに続けて書く ? 例: if 1 < 2: print('True') ? 多重代入(複数の変数に一度に代入) ? 「変数, 変数, … = 式, 式, …」とすると一度に代入
  • 14. 演習2―変数と出力(REPL) 1. 変数oneに1を代入して下さい 2. 変数piに3.14を代入して下さい 3. 変数textに"text"を代入して下さい 4. 変数north,eastに35.7,139.7を代入して下さい ただし1行で記述して下さい 5. one,pi,text,north,eastの値を表示して下さい
  • 16. 想定ユースケース ? ログ解析 ? 量子化学計算などで得られたデータの処理 ? →人間用のログファイルからデータを抽出、加工 ? 解析例 ? 以下のファイルを開いて励起エネルギーを計算 ? 出力はeV単位で行う ? 抽出の時は関係ないデータを拾わないように注意 ? 計算結果の例 ? Molpro2012のログファイルより抜粋 !MCSCF STATE 1.1 Energy -77.591982080137 (省略) !MCSCF STATE 2.1 Energy -77.213738400957
  • 17. 例―MCSCFのエネルギー import sys # 標準入力の読込準備 for l in sys.stdin(): # 標準入力を1行づつlに代入 if not ('MCSCF' in l ? # lの中にMCSCFと and 'Energy' in l): # Energyがなければ continue # 次の行へ token = l.rstrip().split() # lを改行除去し空白で分割 state = token[2] # 準位は第2トークン energy = token[4] # エネルギーは第4トークン print(state, energy) # 準位とエネルギーを出力
  • 18. 解析の流れ 1. ファイルを一行づつ読み込み 2. 必要な行を抽出 3. 必要な列を抽出 4. 抽出した データを 変換 5. 出力
  • 19. 1. ファイルから1行づつ読み込む ? for l in sys.stdin: ? lに標準入力の内容を1行づつ代入してループ ? リダイレクト(「<」)を使うとファイルを開ける ? 読み込んだ行には改行が付いている ? l.rstrip() ? lのコピーを作ってから改行をはがして返す ? l自体の改行を削るには「l = l.rstrip()」 ? 例(cat: ファイルをそのまま表示) for l in fileinput.input(): # ファイルを1行づつ print(l.rstrip()) # 改行削除し1行表示
  • 20. 2. 必要な行を抽出 ? if 'keyword' in l: ? keywordがlの中にあればブロックを実行する ? pythonのブロックはインデント(endifは不要) ? and, or, not ? "keyword" in lは単に条件を指示している ? →and, or, notで「かつ、または、でない」を表せる ? continue ? その外側の(for)ループから抜ける ? 例(キーワード検索) for l in sys.stdin: if 'Energy' in l: print(l.rstrip())
  • 21. 3. 必要な列を抽出 ? l.rstrip().split() ? l.rstrip()はlの末尾の改行除去、.split()が分割 ? 分割された文字列のリスト(配列)ができる ? リストの先頭は「0番」なので注意! ? また、リストの参照は「list[i]」で行う ? 例(1列目だけ表示) for l in sys.stdin: token = l.rstrip().split() print(token[0])
  • 22. 4. 抽出したデータを変換 ? ここが解析プログラムの本体です ? 変換の方法は目的によっていろいろあります ? データを見やすくする ? データの簡単な計算を行う ? … ? しかし、「定石」が存在しません ? そのため、様々な機能を知る必要があります ? 今後の演習で「道具」を紹介していきます ? 目次 ? 第1回: 初めに ? 第2回: 数値計算と文字列、正規表現 ? 第3回: コレクション(リスト、タプル、辞書) ? 第4回: 制御構文とパッケージ
  • 23. 5. 出力 ? 画面への出力 ? print(出力したいもの) ? 配列などの表示も可能です ? 例(cat: ファイルをそのまま表示) for l in fileinput.input(): # ファイルを1行づつ print(l.rstrip()) # 改行削除し1行表示
  • 24. 参考 ? 公式サイト ? トップページ ? http://www.python.jp/ ? チュートリアル ? http://docs.python.jp/3/tutorial/index.html ? ライブラリリファレンス ? http://docs.python.jp/3/library/index.html ? 書籍 ? 入門Python3(Bill Lubanovic et al., O'reilly, 2015) ? 実践Python3(Mark Summerfield et al., O'reilly, 2015) ? Molpro ? http://www.molpro.net