IoTと無線ネットワーク(6)

前言

授業中で寝ちゃった

IoT知識

python

pythonプログラミング(6)

一、内包表記

1.リスト内包表記

  • 基本形 [expression for item in iterable]

  • 例: for文を用いた記述

    25509830

  • 等価な内包表記

    25525271

  • 条件付き内包表記

    25543631

  • 等価なfor文での記述

    25556942

  • ネストした内包表現

    25612437

2.辞書内包表記

  • 辞書の生成

  • {key_item: value_item for item in iterable}

    25701954

3.集合内包表記

  • 集合の生成

  • {item for item in iterable}

    25740915

4.ジェネレータ内包表記

  • 形式: (expression for item in iterable)

  • 系列(シーケンス)を順次生成するオブジェクト

  • 利用方法: 巨大なシーケンスを一度に生成すると巨大 なメモリ空間を消費するが,順次生成すれば,巨大な メモリ空間は必要ない

    25842544

  • 次の値を生成する関数 next

    25930434

二、関数

1.関数

  • 関数

    • 入力値を受取り、計算を行い、結果を出力する複合文
    • 再利用が可能
  • 関数の呼び出し

    • 書式

    • 関数名(引数の並び)

    30416884

2.関数の定義

  • 書式

    def 【関数名】(【引数の並び】):

    【関数の定義】

    • def 関数定義の開始
    • return 出力(戻り値)の記述
  • 呼び出し方法

    • 関数名(引数の並び)

    30601418

3.関数についての補足

  • 引数の個数
    • 0個でも良い 例: foo()
    • 2個以上でもよい 例: foo(x, y)
  • 戻り値
    • return で指定
    • 戻り値を記述しないと None が返される

4.組込み関数

  • システムがあらかじめ提供している関数
    • print 文字列をコンソール画面に出力
    • len 文字列などのオブジェクトの長さ
    • str オブジェクトをstrデータ型の文字列に変換
    • int 整数の文字列もしくは浮動小数点数のオブジェクトを 整数に変換
    • float 数字の文字列もしくは整数のオブジェクトを浮動小数点数に変換
    • input 標準入力から情報(文字列)を入力する関数

5.階乗関数

  • 関数の定義の中で自分 自身を呼び出す関数

    31016624

  • 階乗関数の定義

    31036947

  • ループ版の階乗関数

    31112511

6.フィボナッチ数

  • フィボナッチ数列: 0,1,1,2,3,5,8,13,21,34, ⋯

    31228324

  • 定義

    31242754

7.ハノイの塔

問題:

  • 大きさの異なる𝑛枚のドーナツ状の円盤が杭Aに置いてある

  • これらの円盤を杭Aから杭Bに最小の手数で移動せよ

  • 移動するときには,杭Cを用いても良い

  • ただし,小さい円盤の上に大きい円盤を乗せてはいけない

    31339829

回答:

  1. 杭Aに置かれた𝑛 − 1枚の 円盤を杭Cに移動する

  2. 杭Aに置かれた円盤を杭B に移動する

  3. 杭Cに置かれた𝑛 − 1枚の 円盤を杭Bに移動する

    31531935

  • ハノイの塔問題を解くプログラム

    31619969

三、組込み関数

31710644
31730667

四、グローバル変数とローカル変数

1.変数のスコープ

  • グローバル変数
    • 関数やクラスの外で定義された変数
    • プログラムのどこでも読み書き可能
  • ローカル変数
    • 関数やクラスの中で定義された変数
    • 定義された関数やクラスの中でのみ有効

2.グローバル変数の例

  • グローバル変数へのアクセス

    32349299

  • 関数の中でグローバル変数に書き込む場合には global宣言が必要

    32405363

  • global宣言がないと、xはローカル変数と見なされ、 値が代入される前に参照されるのでエラーになる

    32418660

  • UnboundLocalError

    32438211

3.ローカル変数の例

32507816

  • ローカル変数は関数の外からアクセスできない

    32558362

  • ローカル変数は関数の外からアクセスできない

  • 32615460

五、例外処理

  • b=0の場合にはどうなるか?

    32747195

  • 注:0割り算エラーは,整数割り算 //,剰余%の演算でも発生する

    32807249

  • 0割り算例外を検出して対応する記述

    32821984

  • 0割り算と不正入力例外を検出して対応する記述

    32840252

  • https://docs.python.org/ja/3/tutorial/errors.html

演習課題

演習課題1

# 次の内包表現と等価なプログラムをPythonで作成しなさい。
rows = range(1,3)
cols = range(1,4)
cells = [(row,col) for row in rows for col in cols]
print(cells)
# [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)]

# 答
cells2 = []
for row2 in rows:
    for col2 in cols:
        cells2.append((row2,col2))
print(cells2)
# [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)]

演習課題2

フィボナッチ関数を再帰を用いないで,ループを使っ て記述しなさい。

$$ 𝐹(0)=1 $$
$$ 𝐹(1)=1 $$
$$ 𝐹(𝑛)=𝐹(𝑛−1)+𝐹(𝑛−2), 𝑛>1 $$

ヒント : フィボナッチ関数の定義式を用いて, $ 𝐹 (𝑛) $ の値を, $ 𝑛 = 2, 3, 4, … $ の順に計算すればよい。

def fib(n):
    if n == 0:
        return 1
    elif n == 1:
        return 1
    else:
        return fib(n-1)+fib(n-2)

n = fib(2)
print(n)

n = fib(3)
print(n)

n = fib(4)
print(n)

n = fib(5)
print(n)

# 2
# 3
# 5
# 8

LJT约出门逛逛,昨天因为公司学习会没得去。现在约了出门去逛逛,走了 。20200616 19:36

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注