課題いっぱいありますが,1回で全部終わらせようという意図ではありません. 自分で進められるひとはどんどん先へ進めたらよいですが.
当日説明します.
はじめての Python
端末上で
$ python
として python を実行し,次の内容を1行ずつ入力して動作を確認しなさい. 確認できたら,何が起こっているのかを高橋に説明しなさい.
L = [ 1, 2, 3, 4.56, 'a', 'Hoge', [ 10, 20, 30 ], 999 ] print( 'L = ', L ) nL = len(L) print( 'L has', nL, 'items' ) print( range( nL ) ) print() print( '#####' ) for i in range( nL ): print( i, L[i] ) print() print( '#####' ) for item in L: print( item )
上記の内容を emacs 等のエディタで適当な名前のファイル(慣習的に拡張子を .py とすることが多いのでそれに習おう)に保存し,次のようにして実行できることを確認しなさい.
$ python hoge.py
ソースファイル中でUTF8で日本語等を入れたい場合,ソースの先頭行に次のように書きましょう.
# -*- coding: utf-8 -*-
次のようにして IPython を起動し,その上で上記を実行してみよう.
$ ipython In [1]: %run hoge.py : (プログラムの出力) In [2]: print( L[5], L[-1] )
上記からわかるように,hoge.py の実行が終わっても ipython 上では変数などがそのまま生きている.python コマンドを -i という引数付きで実行しても同様のことができるが,ipython の方がいろいろと便利なので,この授業では ipython を前提とします.
リスト
課題Aのプログラムを実行し,それに続けて ipython 上で次ように実行しなさい.これは,リストのスライスという機能です.
print( L[1:4] ) print( L[:4] ) print( L[4:] ) print( L[::2] ) # コロン(:)2つ print( L[-3:] ) print( L[::-1] )
x:y:z の x, y, z の意味をよく考えよう.
以下を順に実行しよう.途中で随時 x の内容を print しながらすすめること.
x = L[:4] x[1] = -2 max( x ) min( x ) x.sort()
max や min は組み込み関数,sort はリストオブジェクトに作用するメソッド.
Pythonの本などを参考に,リストを受け取る組み込み関数やリストオブジェクトに作用するメソッドとして他のものを探して,動作を確認しなさい.
辞書(ディクショナリ)
Python の辞書について本などで調べ,課題A,Bのような例を適当に自分で作って勉強しなさい.
d[ '012-3456' ]のように打って何が出てくるか確認しなさい.辞書中に存在する番号,存在しない番号両方試すこと.
# -*- coding: utf-8 -*- d = 辞書の定義 key = 適当に代入 if key in d: print( d[key] ) else: print( '見つからへん' )
テキストファイルの読み込み.
TLAB の GoogleDrive の sjs2016 ディレクトリ内に zipdata と zipdata100 という2つのファイルがある.これを自分の手元に保存しなさい
zipdata100 を開いて読み込み,1行ずつ表示するプログラムを作りなさい. ファイルオブジェクトに対する readlines メソッドは大きなプログラムを扱うのにいろいろ問題があるので,次のようにしたらよい.
with open( ... ) as f: for line in f: print( line )
このまま実行すると,line の末尾に改行文字が入っているため,1行空きで表示されるだろう.
上記の for ループの中を改良して,
for line in f: : print( num, addr )
とすると,1行ごとに郵便番号と住所が出力されるようにしなさい.
ファイル zipdata を読み込んで辞書に登録するプログラムを作りなさい.キーを指定して検索するのは,ipython 上で直接手入力で構わない.
key = '0440451' print( d[key] ) 北海道虻田郡喜茂別町上尻別