Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2020_k3_python講座第4回
Search
k3たっつー
June 20, 2020
Education
35
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2020_k3_python講座第4回
2020年度のk3のpython講座第4回の内容になります
k3たっつー
June 20, 2020
More Decks by k3たっつー
See All by k3たっつー
2020_k3_python講座第8回
tattsu_hitsuzi
0
46
2020_k3_python講座第7回
tattsu_hitsuzi
0
42
2020_k3_python講座第6回
tattsu_hitsuzi
0
36
2020_k3_python講座第5回
tattsu_hitsuzi
0
69
2020_k3_python講座第3回
tattsu_hitsuzi
0
1.1k
2020_k3_python講座第2回
tattsu_hitsuzi
0
46
2020_k3_python講座第1回
tattsu_hitsuzi
0
58
Other Decks in Education
See All in Education
iSpindel & AI
lonbrew
0
110
One Year of Learning English with AI @エンジニア英語キャリア Meetup #3
kekekenta
0
210
Geografía y Fútbol: Chattanooga Geografía del Búnker de La Roja.
juanmartin2026
1
12k
[2026前期火5] 論理学(京都大学文学部 前期 第6回)「かつとまたはの規則」
yatabe
0
510
Throw Yourself In! - How I've learned English and What I'm Facing
georgeorge
1
260
20260908_ターゲットとスコープを決める発表法
masakiokuda
1
110
AI時代のセキュリティ監査
matshogo
PRO
0
120
第2部-高校生とAI活用/high-school2026-2
okana2ki
0
160
「答えを出す」より「わかる」をつくる
kzkmaeda
1
300
Visionary Initiative: Materials-Positive Society — Evolving “Things,” empowering a positive society | Science Tokyo
sciencetokyo
PRO
0
270
[2026前期火5] 論理学(京都大学文学部 前期 第13回)「走って、止まって、積み上がる」
yatabe
0
230
Soluciones al examen de Geografía 2026. JULIO (Convocatoria Extraordinaria)
juanmartin2026
1
19k
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
Mobile First: as difficult as doing things right
swwweet
225
10k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
My Coaching Mixtape
mlcsv
0
310
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Deep Space Network (abreviated)
tonyrice
0
310
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
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/ (関数外のリストを操作できる理由)