開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4 (プログラミング言語)
Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の2章(Cメモリとポインタ: 何を指しているの?)、コンパスマグネット(p.49)をpythonで考えてみる。
コンパスマグネット(p.49)
コード(BBEdit, Emacs)
sample49.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- # 最も単純で分かりやすい方法 def go_south_east1(lat, lon): lat -= 1 lon += 1 return lat, lon latitude = 12 longitude = -64 print('開始!現在位置:[{0}, {1}]'.format(latitude, longitude)) latitude, longitude = go_south_east1(latitude, longitude) print('停止!現在位置:[{0}, {1}]'.format(latitude, longitude)) # グローバル変数のを使用、最も注意が必要 def go_south_east2(lat, lon): global latitude global longitude latitude -= 1 longitude += 1 latitude = 12 longitude = -64 print('開始!現在位置:[{0}, {1}]'.format(latitude, longitude)) go_south_east2(latitude, longitude) print('停止!現在位置:[{0}, {1}]'.format(latitude, longitude)) # ミュータブルな(可変性を持つ)オブジェクト、リストの利用 def go_south_east3(lat_lon): lat_lon[0] -= 1 lat_lon[1] += 1 lat_lon = [12, -64] print('開始!現在位置:[{0}, {1}]'.format(lat_lon[0], lat_lon[1])) go_south_east3(lat_lon) print('停止!現在位置:[{0}, {1}]'.format(lat_lon[0], lat_lon[1])) # ミュータブルな(可変性を持つ)オブジェクト、dictionaryの利用 def go_south_east4(lat_lon): lat_lon['latitude'] -= 1 lat_lon['longitude'] += 1 lat_lon = dict(latitude=12, longitude=-64) print('開始!現在位置:[{0}, {1}]'.format( lat_lon['latitude'], lat_lon['longitude'])) go_south_east4(lat_lon) print('停止!現在位置:[{0}, {1}]'.format( lat_lon['latitude'], lat_lon['longitude'])) # classを使用 class Ship: def __init__(self, latitude=12, longitude=-64): self.latitude = latitude self.longitude = longitude def go_south_east(self): self.latitude -= 1 self.longitude += 1 ship = Ship() print('開始!現在位置:[{0}, {1}]'.format(ship.latitude, ship.longitude)) ship.go_south_east() print('停止!現在位置:[{0}, {1}]'.format(ship.latitude, ship.longitude)) # classと関数を使用 def go_south_east5(ship): ship.latitude -= 1 ship.longitude += 1 ship = Ship() print('開始!現在位置:[{0}, {1}]'.format(ship.latitude, ship.longitude)) go_south_east5(ship) print('停止!現在位置:[{0}, {1}]'.format(ship.latitude, ship.longitude))
入出力結果(Terminal, IPython)
$ ./sample49.py 開始!現在位置:[12, -64] 停止!現在位置:[11, -63] 開始!現在位置:[12, -64] 停止!現在位置:[11, -63] 開始!現在位置:[12, -64] 停止!現在位置:[11, -63] 開始!現在位置:[12, -64] 停止!現在位置:[11, -63] 開始!現在位置:[12, -64] 停止!現在位置:[11, -63] 開始!現在位置:[12, -64] 停止!現在位置:[11, -63] $
0 コメント:
コメントを投稿