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

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Scroll to Top