Python (パイソン)を始める

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

プログラミング

  • プログラム:コンピュータに対して書かれた、指示とその指示を実行するもの
  • この指示を所定の言語の法則に従って実装すること

プログラム言語

  • 世の中には数多くのプログラミング言語があります。
    • コンパイラ言語
      • C, Java*, かつては Pascal, COBOL, FORTAN..
        • Java は 仮想マシン により実行
    • インタープリタ言語
      • 逐次機械語に翻訳しながら実行
      • Python
        • 実行速度は遅いので, 何度も繰り返し実行するなら不適当である. (Pythonはパイソンと読む)
        • オブジェクト指向言語でもある
  • 近年では、 CPU の性能が飛躍的に向上してインタプリタ言語も実用に耐えるようになり、適用範囲が広がっています。
  • The 2017 Top Programming Languages」IEEE SpectrumでPythonは1位になっています。
  • ここでは Pythonを使って簡単なプログラム作成を学びます。
  • versionとしては Python 2 と Python 3があります。macにデフォルトでインストールされているのはpython 2です。python 2にしか対応していないコードもありますが、今後サポートが終了しますので、授業ではpython3を使用します。
  • 参考

教科書について

  • 「独習Python入門 」
    • プログラミング初心者むけでpython3に対応
    • 読みやすい内容のため各自該当する項目を予習復習してください。
    • 教科書の説明に従って自宅のwindows機にもpythonをインストールして使用してみてください。
    • 自分のノートPCに、授業の前半でUbuntuをインストールした人は、ターミナルからそのまま利用できるようになっています。自宅学習に利用してください。
    • 両方の教科書にWindows PC で直接 Python を利用する方があります。余裕のある人はぜひ試してみてください。

    Python を始める

    • ここでは,まずPythonを「電卓」的に使った計算を試してみます。(教科書では第1章)

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

    • 開始: コマンドラインから python を引数なしで呼び出す. コマンドはpython3
      • この環境では python2で実行したければ python と入力する
    pc02-01:‾ honda$ python3
    Python 3.6.1 |Anaconda 4.4.0 (x86_64)| (default, May 11 2017, 13:04:09)
    [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] 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.0
    >>> 5 / 2
    2.5

    • 掛け算には * (アスタリスク) ,  割り算には / (スラッシュ) を使うことに注意。
    • 割り算は小数(浮動小数ともいう)で結果を出してくれ る。
      • python 2 では  5 / 2 → 2 となって、整数同士の計算結果は整数に変換されていた
    • 注:浮動とは、小数点の位置が変わることを言う。例1 ... 2.8e7 = 2.8 x 107, 5e-3 = 5.0 x 10-3
    • 演算子:
      • 式で実行する演算をしている記号
      • 算術演算子 +(加), -(減), *(乗), -(除), %(剰余, 余り), **(べき乗)
    • 計算の優先順帆
      • 通常の四則演算と一緒(かけ算割り算が先、次に足し算と引き算, 最初から)
      • ()があるとき()内を優先
    • プログラミング作法
      • 演算子の前後にはスペースを入れると見やすい
        • 2**3  → 2 ** 3

    変数を使う

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

    • この 1.08をどこかに保存しておくと何度も使える。保存する場所に名前を付けたものが変数である。
    • >>> a = 1.08
      >>> 500 * a
      540.0
      >>> 600 * a
      648.0
    • 注: 何度でも使えると言っても、いったん Python を終了してしまうと、もう一度起動したときにはその変数はご破算になる。これについては次回以降で説明します。
    • プログラミング作法
      • 解読が容易であるのが良いプログラム
      • 可能な限り変数名には何のデータかわかる名前をつける
        • 方式
          • キャメルケース  KochiUniversity
          • スネークケース  kochi_university
      • 上の例では a ではなく ratio など のほうがよいだろう

    数学的関数

    • 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

    • 数値型
    • 文字列型
    • 真偽型
    • python 2であった長い整数型*は" python3では整数型に統合
    • 整数はメモリーの許す限り大きな桁にすることができます。
    • これを長い整数と呼び、数の最後に 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/5 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ドル 111 円として、円—ドルの変換を考える。以下の金額(円)のドルへの変 換を、為替レートを変数exchangeRateに保存して、この変数exchangeRateを使って行いなさい。結果は、桁数にこだわらず小数表示するものとします。
                         400円
                        2000円
                      1000000円