pp-2. Python プログラミングの基本

275 Views

December 24, 21

スライド概要

Python とプログラミングの基本)
URL: https://www.kkaneko.jp/cc/colab/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

pp-2. Python プログラミング の基本 (Python とプログラミングの基本) URL:https://www.kkaneko.jp/cc/colab/index.html 金子邦彦 1

2.

Python プログラムの実行 • Python プログラムファイルの実行 コマンドプロンプト • Visual Studio Code Python プログラムの対話的(インタラクティブ)実行 コマンドプロンプト Jupyter Qtconsole Google Colaboratory 2

3.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 Google Colaboratory https://colab.research.google.com/ • Python の開発環境 • 人工知能,データサイエンス,その他多数のパッケージがイ ンストール済み • コードセル,テキストセルを複数ノートブックにまとめ,保 存や公開できる • ノートブックにより,記録が簡単に残せる.ビジュアルな表 示も簡単に可能 • プログラムの共有も簡単 3

4.

Google Colaboratory を使ってみる ① Google Colaboratory のWebページを開く https://colab.research.google.com ② 「ファイル」で、「ノートブックを新規作成」を 選ぶ 4

5.

③ Google アカウントでのログインが求められたと きはログインする ④コードセルの中に Python プログラムを書き、 「再生ボタン」をクリック 5

6.

オブジェクト • オブジェクト: がある オブジェクトには名前と値 • オブジェクトは「値をコンピュータに覚えさ せておくもの」として使うことができる • 値が変化するオブジェクトのことを変数と呼 んだりもする 6

7.

式 式から値が求まる(コンピュータを使って, 計算などができる) 式は変数を含むことができる 7

8.

Python のデータの種類とクラス名 type を用いてクラス名 を取得 8

9.

条件分岐 変数の値によって,結果が変わる(判断) age の値が 12以下 13以上 → 500 yen → 1800 yen 9

10.

条件分岐 次のように入れて実行.結果を確認 age = 18 if (age <= 12): print(500) else: print(1800) if (age <= 12)の直後に「:」 else の直後に「:」 (どちらも,コロン) 字下げも正確に! print の前に,「タブ (Tab)」を 1つだけ 10

11.

条件分岐での正しい字下げ 正しくない字下げ 正しい字下げ 11

12.

配列 データの並びで,0から始まる番 号(添字)が付いている 12

13.

合計 次のように入れて実行.結果 23 を確認 x = [8, 6, 4, 2, 3] print( sum(x) ) 13

14.

配列 6 月は 30日まである.7 月は 31日まである. ポイント:月の日数についてのデータを作る ※ うるう年のことは考えないことにする 次のように入れて実行.結果を確認 days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] print( days[6] ) print( days[7] ) 14

15.

配列と繰り返し 次のように入れて実行.結果を確認 x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for t in x: print( (9.8 / 2) * t * t ) 繰り返す処理 for を使って計算を繰り返している t の値は 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 と変化し,全部済んだら終わる 15

16.

計算誤差 コンピュータで「1÷3」 を求めるとどうなると 思いますか 1.0.333333333333333333333333333333 と無限に表示される 2.計算できない 3.正確な値が表示されない(誤差を含む) 16

17.

計算誤差 次のように入れて実行.結果を確認 print(1/3) 0.0000000000000000333333333333 33333333333333333333333... が誤差! 17

18.

式の抽象化と関数 類似した複数の式 上の3つの式を抽象化 すると,「a * 1.08」の ような式になる. 式「a * 1.08」を含む関数 18 foo を定義し使用

19.

関数 100 * 1.1 a * 1.1 150 * 1.1 400 * 1.1 類似した複数の式 変数 a を使って,複数 の式を1つにまとめる (抽象化) 式「a * 1.1」を含む 関数 foo を定義 関数 foo を使用. 100, 150, 400 は引数 19

20.

式の評価のタイミング 関数の中の式「a * x」の評価 では,最新の a の値,最新の x の値が用いられる ← foo(100) の値は 30000 a 100 x 300 ← foo(100) の値は 300000 a 100 x 3000 20

21.

オブジェクトとメソッド hero.moveDown() hero オブジェクト moveDown() メソッド 間を「.」で区切っている • オブジェクト コンピュータでの操作や処理の対象となるもののこと. ※ 値が変化するオブジェクトのことを変数と呼んだりもする • メソッド オブジェクトに属する操作や処理のこと 21

22.

クラス • クラスは,同じ種類のオブジェクトの集まりと考 えることができる 人間 学生 学生でもあり人間でもある 人間だが、学生ではない 22

23.

Python のクラスとオブジェクト 次の2つのオブジェクトを生成する Python プログラム x 5 y 3 170.51 40.97 qty weight 'apple' ‘orange' name x = C(5, 170.51, 'apple') y = C(3, 40.97, 'orange') Python プログラム • このとき,次のクラスを使うことにする クラス名 C 属性 qty, weight, name class C(object): def __init__(self, qty, weight, name): self.qty = qty self.weight = weight self.name = name Python プログラム 23

24.

コンストラクタ コンストラクタは,オブジェクトの生成を行う メソッドである. コンストラクタ class C(object): def __init__(self, qty, weight, name): self.qty = qty self.weight = weight self.name = name 24

25.

属性アクセスとメソッド • メソッド定義内では,self +「.」で属性やメソッド にアクセスする class C(): def __init__(self, qty, weight, name): self.qty = qty self.weight = weight self.name = name def total(self): return self.qty * self.weight • 「.」+メソッド名によるメソッド呼び出し 25

26.

属性アクセスとメソッド vars() による属性表示 「.」+属性名による 属性アクセス 26

27.

スーパークラス,サブクラス • スーパークラス「人間」 • サブクラス「学生」 「学生」のオブジェクトは,すべて「人間」である (あるサブクラスに属するオブジェクトは、その スーパークラスにも属する) 人間 学生 学生でもあり人間でもある 人間だが、学生ではない 27

28.

継承 • 継承とは,スーパークラスの属性とメソッドをサブ クラスが受け継ぐこと • 但し,コンストラクタは受け継がない 28

29.

スーパークラスからの継承 class C(object): def __init__(self, qty, weight, name): self.qty = qty self.weight = weight self.name = name def total(self): return self.qty * self.weight クラス定義 class E(C): def __init__(self, qty, weight, name, price): super(E, self).__init__(qty, weight, name) self.price = price def payment(self): return self.qty * self.price クラス定義 クラス名 C クラス名 E 属性 qty, weight, name 属性 qty, weight, name, price クラス E は,スーパークラス であるクラス C の属性とメ ソッドを継承する. 29

30.

クラス定義,コンストラクタの演習 class C(object): def __init__(self, qty, weight, name): self.qty = qty self.weight = weight self.name = name x = C(5, 170.51, 'apple') print(vars(x)) y = C(3, 40.97, 'orange') print(vars(y)) 30

31.

クラス定義,コンストラクタの演習 class D(object): def __init__(self, s_hour, s_minute): self.s_hour = s_hour self.s_minute = s_minute self.e_hour = None self.e_minute = None z = D(15, 30) print(vars(z)) z2 = D(16, 15) print(vars(z2)) 31

32.

クラス定義,コンストラクタ,継承の演習 class C(object): def __init__(self, qty, weight, name): self.qty = qty self.weight = weight self.name = name def total(self): return self.qty * self.weight class E(C): def __init__(self, qty, weight, name, price): super().__init__(qty, weight, name) self.price = price def payment(self): return self.qty * self.price x2 = E(2, 875.34, 'melon', 500) vars(x2) print(x2.total()) print(x2.payment()) type(x2) 32

33.

Python のキーワード print type if, else for, while def return class __init__ self vars super 表示 型名(クラス名)の取得 条件分岐 繰り返し 関数定義 関数の評価値 クラス定義 オブジェクトの生成(コンストラクタ) クラス定義内で自オブジェクトへアクセス オブジェクトの属性名と値 親クラス(スーパークラス)の取得 33

34.

関連資料 • Python まとめページ https://www.kkaneko.jp/cc/python/index.html • Python とプログラミングの基本 Google Colaboratory を使用. https://www.kkaneko.jp/cc/colab/index.html • Python 入門(全6回) Google Colaboratoryを使用. https://www.kkaneko.jp/cc/pf/index.html • Python プログラミング演習(全9回) Python Tutor, VisuAlgo を使用 https://www.kkaneko.jp/cc/po/index.html • さまざまな Windows アプリケーションのインストールと設定 https://www.kkaneko.jp/cc/tools/index.html 34