Views
ファイルにプログラムを作る
ファイルにプログラムを作る
- Python でいろいろな計算ができることがわかったが、計算の手順は Python を ^D で終了してしまうと消えてしまう。計算の手順を再利用するには、その手順をファイルに書いておくことが必要である。
- また、math モジュールを import すると、π や √ などの数学関数を利用することができた。では、そのモジュールを自分で作ることができるだろうか?実は,モジュールはファイルなので,自分で手順をファイルに書いておくと,それをモジュールとして利用できる。
- ここでは,3.2 プログラム(モジュール)ファイルの基本的なところを学ぶ。また、5章(文字列)も出てくるがここでは文字列演算などの複雑なことはまだ出てこない。
作業ディレクトリを作る
- 今日からの授業では、Python のプログラムをファイルに作成するので、まず、そのための作業ディレクトリを作成しよう。
$ cd $ mkdir python $ cd python $ mkdir 08 $ cd 08
単純な例
- 次のプログラムを a.py というファイルに作成する。
(エディタを使う を参考にする)
# -*- coding: utf-8 -*- print '四則計算' a = input('a の値を入れてください ') b = input('b の値を入れてください ') print 'a + b =', a + b print 'a - b =', a - b print 'a * b =', a * b print 'a / b =', a / b
Python プログラムの注意
- 必ず行のはじめの桁から1文字目を入れてください。
- Python は 実は 行のそろえ方で「プログラムの構造」を判断しています。
- 今日の例の場合、行の始めに空白があるとエラーになるでしょう。
# -*-
で始まる coding 行が無いと警告が出ます。現状無害ですが、入れておいた方がよいです。
モジュールとして実行
- Python を起動して、a (.py を除く) をモジュール名として指定して import すると、ファイルに書かれたプログラムを実行する。
>>> import a 四則計算 a の値を入れてください 123 b の値を入れてください 456 a + b = 579 a - b = -333 a * b = 56088 a / b = 0 >>>
再実行
- 一度 import したモジュールを修正の後などに再実行する場合には, reload() する必要がある。
>>> reload(a) 四則計算 ...
python コマンドの引数に指定して実行
- コマンドラインから実行するには、python コマンドの引数としてファイル名を指定すればよい。
$ python a.py 四則計算 a の値を入れてください 9876 b の値を入れてください 543 a + b = 10419 a - b = 9333 a * b = 5362668 a / b = 18 >>>
スクリプトにする
- a.pyの第1行目に次のおまじないを入れて、ファイルに実行許可を与えると、python をコマンドラインに書かなくてもよくなる。
#!/usr/bin/env python
$ chmod +x a.py $ ./a.py 四則演算 a の値を入れてください 1234 b の値を入れてください 567 a + b = 1801 a - b = 667 a * b = 699678 a / b = 2
文字列の入力
- 次のようなプログラムを、 b.py というファイルに作成する。
#!/usr/bin/env python # -*- coding: utf-8 -*- who = raw_input('お名前をどうぞ: ') print who, 'さん、こんにちは!'
- 実行権を与えて,試してみよう。
$ ./b.py お名前をどうぞ 高橋 高橋 さん、こんにちは!
文字列について
- 「文字列」については、第5章を参照
- input() と raw_input() の違い:
とりあえず、前者は数値を入れるとき、後者は文字列を入れるときに使うと考えてください。
コマンド引数を使う
- UNIX のコマンドのように、コマンドラインに書いた引数を使うには、次のc.py のように、sys.argvを参照する。
#!/usr/bin/env python # -*- coding: utf-8 -*- # こんばんは import sys who = sys.argv[1] print who, 'さん、こんばんは!'
実行例
$ ./c.py 田中 田中 さん、こんばんは!
- 注:上のプログラム例では Python ライブラリにあらかじめ用意されている sys モジュールを import してその中の argv というものを利用している。 sys.argv のように '.' (ドット)で区切って指定する。
[1]
の部分は、次回に学ぶリストの要素指定である。
問題
- int(x) は他の型のオブジェクト(例えば文字列) x を整数に変換す関数である。 インタラクティブモードで実際に使ってみなさい。
- 商品の価格から消費税込みの値段を計算するスクリプト(q2.py)を作りなさい。このとき、価格入力を要求するプロンプトを出すようにしなさい。
- 同じく、商品の価格から消費税込みの値段を計算するスクリプト(q3.py)を作りなさい。但し、価格はコマンドラインで引数として与えるようにしなさい。
解答は、"メール":mailto:tkikuchi+ci2006@is.kochi-u.ac.jp?subject=08_ScriptModule で送ってください。
また,今回の演習の結果できたファイルはそのまま ~/python/08 に残しておいてください。評価の対象とします。