Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2020_k3_python講座第4回
Search
k3たっつー
June 20, 2020
Education
0
33
2020_k3_python講座第4回
2020年度のk3のpython講座第4回の内容になります
k3たっつー
June 20, 2020
Tweet
Share
More Decks by k3たっつー
See All by k3たっつー
2020_k3_python講座第8回
tattsu_hitsuzi
0
44
2020_k3_python講座第7回
tattsu_hitsuzi
0
39
2020_k3_python講座第6回
tattsu_hitsuzi
0
32
2020_k3_python講座第5回
tattsu_hitsuzi
0
66
2020_k3_python講座第3回
tattsu_hitsuzi
0
1.1k
2020_k3_python講座第2回
tattsu_hitsuzi
0
44
2020_k3_python講座第1回
tattsu_hitsuzi
0
56
Other Decks in Education
See All in Education
2025年度春学期 統計学 第15回 分布についての仮説を検証する ー 仮説検定(2) (2025. 7. 17)
akiraasano
PRO
0
110
OpenSourceSummitJapanを運営してみた話
kujiraitakahiro
0
790
Tutorial: Foundations of Blind Source Separation and Its Advances in Spatial Self-Supervised Learning
yoshipon
1
150
(2025) L'origami, mieux que la règle et le compas
mansuy
0
130
2025/06/05_読み漁り学習
nag8
0
200
20250910_エンジニアの成長は自覚するところから_サポーターズ勉強会
ippei0923
0
230
American Airlines® USA Contact Numbers: The Ultimate 2025 Guide
lievliev
0
250
AIの時代こそ、考える知的学習術
yum3
2
200
(キラキラ)人事教育担当のつらみ~教育担当として知っておくポイント~
masakiokuda
0
140
Avoin jakaminen ja Creative Commons -lisenssit
matleenalaakso
0
2k
Human-AI Interaction - Lecture 11 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
530
理想の英語力に一直線!最高効率な英語学習のすゝめ
logica0419
6
390
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Scaling GitHub
holman
463
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
It's Worth the Effort
3n
187
28k
Transcript
K3 Python講座 6月20日 担当:くまばち 今日のテーマ:関数
前回のおさらい タートル機能 forward, backward – 前進, 後退
left, right – 旋回 circle – 半径xの円を描く up, down – 筆の上げ下げ color, fillcolor – 筆の色、塗りつぶしの色を指定 begin_fill ~ end_fill – 間で記述した図形を塗りつぶす
復習問題(L4_0.py) Turtleを用いて車を書いてみよう 四角と丸二つの簡単な奴でおk(てか僕はそうしました) 余裕があったら複数台書いたり色付けたりしてみよう
復習問題解答(一例) 描画開始座標、車の色の情報を含んだ 多重リストを作る 一台分の車の描画をforループで回す
今回のテーマ 関数 関数とは? 関数の定義 変数のスコープ
再帰関数
関数とは? 繰り返し利用したい命令群をひとまとめにし、呼び 出せるようにしたもの 処理をまとめておくことでコードが見やすくなる、重複した 処理を無くせる等のメリット 関数 出力 計算・処理
返り値 (なくてもいい)
print()、 input()等、Python自体にあらかじめ用意 されている関数 組み込み以外のものを使いたい ⇒importするか自分で作ろう 組み込み関数 importを必要 としない
モジュール Python
関数の定義 def 関数名(引数): //処理の内容 return x //返り値が欲しい場合 基本はこの形
引数は複数指定可能 (引数=デフォルト値)と定義すると、引数が省略され た際デフォルト値が利用される(デフォルト引数) 注意:通常の引数の前にデフォルト引数を置くとエラー を吐きます
関数の定義(続き) def 関数名(引数): //処理の内容 return x //返り値が欲しい場合 returnを省略すると返り値にNoneが入る
呼び出す際はprint()等と同様に、関数名(引数) 必ず関数を定義してから呼び出そう ※Pythonでは「関数を定義し、変数に代入」という処 理を行っているので、関数と変数の名前が被らないよ う気を付けよう
例題1(L4_1.py) 与えられた数値リストの平均、分散、標準偏差を求 める関数を定義し、以下のリストの平均、分散、標 準偏差を求めよう nums = [14, 2, 13,
20, 16] 平均をとすると、 分散 σ2 = 1 σ=1 − 2 値と平均の差の二乗を平均したもの 標準偏差 σ = 1 σ =1 − 2 分散のルート
例題1解答
変数のスコープ スコープ(有効範囲) 0と10、どっちが出力されるだろう 0が出力される 10はf1内のローカル変数xに代入され、外のグローバル 変数xの値は変わらない
変数のスコープ(続き) じゃあこれも…? f1内にローカル変数xが定義されていないか らエラーを吐くのでは? 問題なく100が出力される Pythonでは関数内にローカル変数が定義されていない 場合、外のスコープにある変数を参照しに行く
変数のスコープ(続き) 関数内でグローバル変数を宣言 こうするとf1内でグローバル変数xに代入できるよう になり、10が出力される 便利ではあるが予期せず変数の値が変わってしまうこと もあるため、使う際はしっかりと設計した上で
再帰関数 処理の中で自分自身を呼び出す関数 なぜ使うの? どんな大きな問題でも小さく分割すれば楽に解決でき るのでは?という着眼点に基づく 入力の規模が大きくなるにつれ実行時間が飛躍的に
長くなることに注意 実装例: フィボナッチ数
再帰関数(続き) 再帰のルール 終了条件を明白にしておくこと(無限ループしないよ うに) 終了条件に向かって状態を変えながら進んでいくこと 再帰的に自分自身を呼び出し続けること
繰り返し回数分かってるならfor文の方がいいです…
例題2(L4_2.py) 再帰関数を用いて、ユークリッドの互除法を関数で 定義し、3355と2379の最大公約数を求めよう ユークリッドの互除法: 120 ÷ 66 = 1
余り 54 66 ÷ 54 = 1 余り 12 54 ÷12 = 4 余り 6 12 ÷ = 2 このように割る方と余りを次式に代入し、 余りが0になった際の割る方が最大公約数となる
例題2解答
まとめ 関数は一連の処理を再利用するためのしくみ def 関数名(引数): 関数内外では変数のスコープが違う global変数
再帰関数:自分自身を呼び出す
演習(L4_3.py) ブラックジャックゲームを作ってみよう 最初にトランプの山から手札を二枚引く その後一枚引くか(ヒット)止めるか(スタンド)を繰り 返し、より21に近い合計値を作れた方の勝ち J, Q,
Kの値は10、Aは1 21を超えると自動的に敗北(バースト) 実際にはもう少し詳しいルールではあるが、難易度 が高くなるためどの範囲まで実装するかは自由 ヒント:関数の外にあるリストでも関数内で操作は できる
演習(L4_3.py) reset_deck() ⋯ トランプの山を生成 hit(hand) ⋯ 手札のリストを引数にとり、山からカードを一枚手札に加え、 手札の点数を随時計算する
show_hand(hand, player) ⋯ 手札のリストとプレイヤー名(str)を引数に とり、プレイヤー名とその人の手札を表示する judge(point, dealer_point) ⋯ 自身の点数とディーラーの点数を比較し、 勝利判定を行う これらの関数を定義してプログラムしてみよう
演習(L4_3.py) より詳細なルール Aは手札によって1か11か値を選べる Aと10,J,Q,Kのいずれかを揃えるとブラックジャック ディーラーがブラックジャックでなければ勝利 ディーラーの手札は一枚公開、一枚非公開でスタートする
(プレイヤーに降りるチャンスを与えるためのものだから掛 け金システムつけないならいらないかも) ディーラーはヒットスタンドを選べない 17以上になるまで引き続ける 掛け金システムを実装すればスプリット,ダブルダウンなど の戦術が使えるようになる(僕はやりません) 自分以外にCOMをプレイヤーとして用意しても面白いです ね(僕は(ry)
演習解答
演習解答
参考 https://snowtree-injune.com/2018/07/29/post-738/ (関数外のリストを操作できる理由)