Python (パイソン)を始める

(菊地先生のオンラインテキスト(2006年版)に準拠)

プログラミング

  • 皆さんは、1学期に「パソコンの使い方」を習ってきました。また、この授業の前半では「UNIXの使い方」を習ってきました。しかし、どちらもどこかの人が「こんなふうに使いなさい」と言うので、その「使い方」を学んでいるにすぎません。
  • これからは、自分が「こんなふうに使いなさい」と言える人になることを学びます。それが、プログラミングです。

プログラム言語

  • 世の中には数多くのプログラミング言語があります。
    • コンパイラ言語
      • C言語
        • 単に C とも呼ぶ. コンピュータのオペレーティングシステムの記述に 使われている. 殆どの UNIX系システムではアプリケーションプログラムの コンパイルのために ヘッダファイル (/usr/include) と ライブラリ(/usr/lib) を提供している.
      • Pascal
        • アルゴリズムの記述に優れていると言われる. 普通は Pascal の 処理系は別売りで,システムとの低レベルでのインターフェース は苦手らしい.
      • FORTRAN
        • 科学計算に昔から使われてきた. ゆえに, プログラミングスタイルが 古臭くなっているが,なかなか無くならない.
    • インタープリタ言語
        • 上の3つのコンパイラー言語と違ってインタプリタである. このため,作成したプログラムを即実行できる. ただし, 実行速度は遅いので, 何度も繰り返し実行するなら不適当である. (Pythonはパイソンと読む)
        • オブジェクト指向言語でもある。
  • 近年では、 CPU の性能が飛躍的に向上してインタプリタ言語も実用に耐えるようになり、適用範囲が広がっています。
  • ここでは Pythonを使って簡単なプログラム作成を学びます。
  • 参考

教科書について

  • 今年度から教科書を「Pythonスタートブック」、参考書を「初めての Python 」としました。
  • 「Pythonスタートブック」
    • プログラミング言語としてはじめてPythonを使用する人向けに書かれています。一人でも教科書を読みながら学習をするには適しています。ただし、記述されている内容は初歩的な内容に限られています。
    • 授業では一部の内容を紹介するだけですので、自宅学習でぜひ授業で触れなかった部分も学習してもらいたいと思います。
  • 「初めての Python 」
    • 初めてプログラミングをする人だけでなく、他の言語でプログラミングを学んだ人が「初めて」Python を使う場合にも使えるように書かれています。
    • 従って、高度な内容が含まれています。
    • 本格的にPythonを使用してプログラミングを実施したい人はぜひ手元に置くようにしてください。
  • 自分のノートPCに、授業の前半でUbuntuをインストールした人は、ターミナルからそのまま利用できるようになっています。自宅学習に利用してください。
  • 両方の教科書にWindows PC で直接 Python を利用する方があります。余裕のある人はぜひ試してみてください。

Python を始める

  • ここでは,まずプログラミング以前として,Pythonを「電卓」的に使った計算を試してみます。(教科書では第1章、参考書では第3章のはじめと第 4章あたりです)

Python (インタラクティブモード)の開始と終了

  • 開始: コマンドラインから python を引数なしで呼び出す.
pc02-01:‾ honda$ python
Python 2.3.5 (#1, Mar 20 2005, 20:38:20)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

  • ここで >>> は python のプロンプトである。 Python を終了するには ^D (Ctrl+d) を入力する。

Python で計算

  • それではもういちど Python を起動して計算をしてみよう。
>>> 1 + 1
2
>>> 3 - 1
2
>>> 2 * 1
2
>>> 4 / 2
2
>>>

  • 掛け算には * (アスタリスク) ,  割り算には / (スラッシュ) を使うことに注意。

ちょっとした癖

  • 自分の好きな数を使って計算の練習をしてみよう。
>>> 5 / 2
2
  • あれ?なんかおかしい。これは、整数の範囲で計算しているから。小数を使うことを明示すると、小数(浮動小数ともいう)で結果を出してくれ る。
>>> 5. / 2
2.5

  • 注:浮動とは、小数点の位置が変わることを言う。例1 ... 2.8e7 = 2.8 x 107, 5e-3 = 5.0 x 10-3

変数を使う

  • 消費税込みの金額を計算することを考えよう。品物の金額に 1.05 を掛ければよい。
>>> 300 * 1.05
315.0

  • この 1.05 をどこかに保存しておくと何度も使える。保存する場所に名前を付けたものが変数である。
  • >>> a = 1.05
    >>> 500 * a
    525.0
    >>> 600 * a
    630.0
  • 注: 何度でも使えると言っても、いったん Python を終了してしまうと、もう一度起動したときにはその変数はご破算になっています。本当に、何度も使えるようにする方法については次回以降で説明します。

数学的関数

  • sin, cos, sqrt などの数学的関数を使うには,次のまじないをする必要がある。
from math import *
  • 数学的関数には以下のようなものがある。
    • sin(x) ... sin x (x はラジアン単位)
    • cos(x) ... cos x
    • tan(x) ... tan x
    • atan(x) ... arctan x (tan-1 x)
    • pi ... π (円周率)
    • e ... e (自然対数の底)
    • log(x) ... log x (自然対数)
    • log10(x) ... log10 x (常用対数)
    • sqrt(x) ... √x (2乗根)

  • >>> from math import *
    >>> pi
    3.1415926535897931
    >>> e
    2.7182818284590455
    >>> cos(pi/4)
    0.70710678118654757
    >>> sin(pi/4)
    0.70710678118654746
    >>> sqrt(2)
    1.4142135623730951

長い整数

  • 整数はメモリーの許す限り大きな桁にすることができます。
  • これを長い整数と呼び、数の最後に L を付けて表します。
>>> 1000000000000000000000000000000000000000000000000000000
1000000000000000000000000000000000000000000000000000000L

複素数

  • Python では複素数の虚数部を表すのに j を使います
  • >>> 1j * 1j
    (-1+0j)

  • 複素数の数学関数は cmath に入っています。
  • >>> from cmath import *
    >>> exp((pi/4)*1j)
    (0.70710678118654757+0.70710678118654746j)
    
      

課題

以下の問いの答えをサブジェクト名"p1 kadai"で honda@is.kochi-u.ac.jp あてにe-mailで送信してください。なお、答 えだけでなくpythonを使用した計算の過程も示しなさい。(答えにはPython の開始からを含めてください。)

締め切り 12/10 17:00
(配点 1,2 15点、3, 4 30点)
  1. べき乗(**)と加算を使って、2進数 1001010101001の10進数表示を得なさい。
  2. オイラーの式  はejx  = cos (x) + j  sin (x) です。ここで、jは虚数単位とします。x=0.1として、両辺が等しくなる事を確認しなさい。なおpythonでは ex exp(x) で計算する事ができます。
  3. lim(x→0) sin(x)/x  は 1.0 である。しかし,sin(0.0)/0.0 を計算することは できない。x に小さい値を入れて計算してみて1.0 に近づいていく様子を見てみよう。xの値がどのくらいになったとき、正しい値1.0との誤差が0.1%以下になるだろうか?xの値を,たとえば、1、0.1、0.001 と減少させて調べて答えなさい。なお、この調べる過程も解答に含めてください。
  4. 現在の為替レートを1ドル101円として、円—ドルの変換を考える。以下の金額(円)のドルへの変 換を、為替レートを変数rateに保存して、この変数rateを使って行いなさい。結果は、桁数にこだわらず小数表示するものとします。
                     400円
                    2000円
                  1000000円