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講座第3回
Search
k3たっつー
June 13, 2020
Education
0
1.1k
2020_k3_python講座第3回
2020年度のk3のpython講座第3回の内容になります
k3たっつー
June 13, 2020
Tweet
Share
More Decks by k3たっつー
See All by k3たっつー
2020_k3_python講座第8回
tattsu_hitsuzi
0
42
2020_k3_python講座第7回
tattsu_hitsuzi
0
38
2020_k3_python講座第6回
tattsu_hitsuzi
0
31
2020_k3_python講座第5回
tattsu_hitsuzi
0
65
2020_k3_python講座第4回
tattsu_hitsuzi
0
32
2020_k3_python講座第2回
tattsu_hitsuzi
0
43
2020_k3_python講座第1回
tattsu_hitsuzi
0
55
Other Decks in Education
See All in Education
Data Physicalisation - Lecture 9 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
440
2025年度春学期 統計学 第5回 分布をまとめるー記述統計量(平均・分散など) (2025. 5. 8)
akiraasano
PRO
0
110
実務プログラム
takenawa
0
5.3k
計算情報学研究室 (数理情報学第7研究室)紹介スライド (2025)
tomonatu8
0
520
著作権と授業に関する出前講習会/dme-2025-05-01
gnutar
0
200
より良い学振申請書(DC)を作ろう 2025
luiyoshida
1
3.2k
Implicit and Cross-Device Interaction - Lecture 10 - Next Generation User Interfaces (4018166FNR)
signer
PRO
2
1.7k
Gaps in Therapy in IBD - IBDInnovate 2025 CCF
higgi13425
0
490
i-GIP 2025 中高生のみなさんへ資料
202200
0
480
Case Studies and Course Review - Lecture 12 - Information Visualisation (4019538FNR)
signer
PRO
1
2k
マネジメント「される側」 こそ覚悟を決めろ
nao_randd
10
5.3k
生成AIとの上手な付き合い方【公開版】/ How to Get Along Well with Generative AI (Public Version)
handlename
0
470
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Writing Fast Ruby
sferik
628
62k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
KATA
mclloyd
30
14k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Transcript
K3 Python講座 6月13日 担当:夕月 空(ソラ) 今日のテーマ:タートル
前回のおさらい for,whileでプログラムを繰り返し実行できる リストや辞書で数とか文字列とかをまとめられる for a in range(10): ループ変数
(この場合0~9が入る) 繰り返し回数 for a in [4,6,4,9]: ループ変数 (この場合4,6,4,9の順に入る) リスト string list=[“お”,”も”,”て”,”な”,”し”] number list=[1, 1, 2, 3, 5, 8, 13, 21, 34, 55] 文字列リスト 数値リスト 0番目の要素 string list[0] → “お” number_list[5] → 8
復習問題(ファイル名:L3_0.py) 違う文字探すやつ(語彙力)作ってみましょう 10×10の「あ」のなかにランダムで一つ「お」が混 じってる できた人はゲーム化してみましょう 「お」の位置を入力させて正解かどうか判定する
ああああああああああ ああああああああああ ああああああああああ ああああああああああ ああああああああああ ああああああああああ ああおあああああああ ああああああああああ ああああああああああ ああああああああああ ↑こういうの ヒント:「あ」のリスト作って 0~99の乱数で当たったところの要素を「お」に変える 表示のヒント:print(“文字列”,end=“”)で改行せずに表示できる もしくは文字列の足し算でくっつけてみる(“あ”+”お”=“あお”)
復習問題解答 a:0~9、b:0~9なので 10*a+bで0~99を表せる print(“文字列”,end=“”)で 改行無しで表示できる 10文字表示して 改行して の繰り返し ※要素数100個のリスト→0~99番 ”あ”のリストに100をかけると
“あ”が100個のリストができる 単純に作るより奇麗で見やすい 要素番号をランダムに一つ選んで その番号の要素を”お”に変える 改行
復習問題別解 randomの中の関数 (randomのインポートが必要) 空のリストに”あ”を100回入れてる リストの最初の要素を”お”にして リストをシャッフルすることで “お”をランダムな位置に送ってる 外側のforで各周回ごとに空の文字列を作って その中に一列分の文字列を足して表示して を繰り返してる
やり方は一つじゃありません いろいろ探してみましょう
復習問題解答(発展):ゲーム化してみる プレイヤーに行、列を入力してもらって それに対応する番号の要素を見て それが”お”だったら正解と表示する ここでは簡単にしかやってませんが
興味ある人はいろいろいじくってみましょう 入力する行、列の値は1から始まるのに対して 処理上の値は0から始まるのでこんな変な感じ の変形になる Inputの返り値はstr型になるから int()でint型に型変換してる(第1回参照) (´・ω・`)
本題:タートル 今日の大まかな流れ 1、タートルってなんやねん 2、亀さんを動かしてみよう 3、亀さんの特殊な動き 4、色を塗ってみる
タートルって? 今までの講座では数字とか文字の操作をしてきた 今日はPythonで絵を描いてみる Pythonには絵が描く方法がいろいろあって そのうちの一番わかりやすくて簡単なのがタートル ※ちなみにタートルはもともと子供向けだったりする
※他にはTkinter (追々やる) などがあります ※その代わり複雑なことはできない
亀さんでお絵描き いや亀でお絵描きってなんやねん 基本イメージ:鉛筆を持った亀さんを動かしてその 動いた跡に残る線を使う 右からくるぞ 気をつけろ
亀さんを動かす準備 まずturtleが使えるようにする→import turtle 亀さんを一匹召喚して名前を付ける→t=turtle.Pen() まとめると、 import turtle
t=turtle.Pen() これで準備完了 名前 召喚 もちろん名前は 何でもいいです (Steveとか Alexとかでも()) ←命名:t 不憫すぎる()
亀さんを動かしてみよう 亀さんの動かし方(基本) t.forward(100)・・・tを100だけ前に動かす t.backward(100)・・・tを100だけ後ろに動かす t.right(90)・・・tを90°右に回転
t.left(90)・・・tを90°左に回転 各動きの数字の部分を変えるとその分だけ回転したり進んだりできる Ex)t.forword(200)・・・tを200だけ前に動かす 実際に見たほうが早いので実際にやってみます t.fd(100) t.bk(100) t.rt(90) t.lt(90) とかでもできる t.clearで書いたものを全て消せる t.resetで書いたものを全て消して 亀さんを最初の位置に戻せる
例題1(ファイル名:L1_1.py) 亀さんを使って「田」を描いてみましょう 多少歪んでいてもおkです 速く終わった人はクリーパー作ってみましょうw こーいうの Oミノともいいます() ※呼びましたが来ないでください(理不尽)
例題1解答 タートルのプログラムを書くときは どういう風に描いていくのかを 考えてから書き始めると良いです このプログラムでは
前後運動→曲がる→前後運動の流れで 中の十字を描いてから外側の大きい四角 を描くという流れで描いています 外側の大きい四角を描くときはfor文を 使ってます
例題1追加問題解答: クリーパー そのまま貼ると文字がめっちゃこまく なるので分割しました 左側が下半分、右側が上半分を描いて る感じです スタート 動きのイメージ
さらにいろいろ動かしてみる 亀さんの動かし方(特殊) t.circle(100)・・・半径が100の円を描く 動きが特殊なので実際に見てみましょう t.up()・・・亀さんが鉛筆を上げる(線が描かれなくなる) t.down()・・・亀さんが鉛筆を下ろす(線が描かれるようになる)
t.up() t.down() 愛着湧いてきたw
例題2(ファイル名:L3_2.py) 亀さんを使って「円を3つ」 描いてみましょう 多少位置が違くてもおkです 速く終わった人はテトリミノでも (解答は時間の都合上割愛してます())
こーいうの() (怒られないことを願おう) ←とってもいい練習だと思います 興が乗った人は DT砲でも描いてみましょうw 他意はありません()
例題2解答 僕は斜め移動を使いましたがもち ろん縦横移動でやってもおkです 縦横でやった人はおそらく 位置調整が面倒やったかなと スタート かわいい()
色を付けてみる 亀さんの色の付け方 t.color(“red”)・・・亀さんの持ってる鉛筆の色を赤にする t.begin_fill()・・・塗りつぶす準備 t.end_fill()・・・塗りつぶし実行
beginとendで挟んだ間に描いた図形を塗りつぶす ex) t.begin_fill() t.circle(100) t.end_fill() t.fillcolor(“blue”) とかで 塗りつぶす色と 線の色を変えられる
そのほか そのほかのturtleの機能を軽く紹介します t.hideturtle(),t.showturtle() ・・・亀さんを隠したり現れさせたり t.speed(“fast”)・・・fastest,fast,normal,slow,slowest t.write(“Hello,world!”)・・・亀さんがいる位置に
”Hello,world!”と描く t.pos()・・・亀さんのいる座標を返す t.goto(100,100)・・・座標(100,100)に行く
演習(ファイル名:L3_3.py) スターミー(?)を描いてみましょう→ 色とか形とか違くてええです 完成したら より本家に近づけるかコードを簡単にし てみましょう
質問とか受付中です この演習の質問とかでなくてもよきです ←本家スターミー むしろ質問してくれると嬉しい 108° 36°
演習問題解答 動きを ☆を描く動作*2 〇を描く動作*2 と考えて細かいところを変 数で調整する形にしてます
もちろん全部書き並べても おkです 細かい説明は次ページへ
星の中心から星の角に移動する なお、星型の構造的に正確な移動は不可能(多分) なので、中心からはちょっとズレる color=外枠の色 fillcolor=塗りつぶしの色 ☆を描いてる 星の角から星の中心に戻る スタート ここに行く 54°
初期の向きを反対に向けて 同じように描くと 上下ひっくり返った星が描ける
先に黄色の丸を描くので 初期設定は黄色の丸のことにする 半径の分前に進んで丸を描い て戻ってくる スタート 次に描く赤色の丸の設定をしている 初期: 半径:45、色:黄色
次期: 半径:30、色:赤色
まとめ forward left backward right down up circle begin_fill fillcolor
color end_fill hideturtle showturtle speed
余計な話:アニメーション タートルでアニメーションができたりします 興味がある方は調べてみてください(もちろん聞いてもらえれば教えます) from time import sleep
screen=turtle.getscreen() Screen.tracer(0) と最初に追加して 1フレームの絵を描いたら t.update() sleep(0.01) t.clear()
最後に turtleにはいろいろな機能があります 到底紹介しきれない それらは自分で試行錯誤しながら身に着けてほ しい もちろん僕とかに聞いてもらってもいいです
「こういうことがしたい」とか言ってくれれば 頑張ってアドバイスとかしたいと思います
終わりやで ご清聴(?)ありがとうございました 個人でもturtleで遊んでみてください 質問かなにかあればSlackでもTwitterでもいい ので投げてください~ お疲れ様でした~
夕月空のTwitter: sora28(ソラ) @sora628496 時間があれば僕がturtleで作ったゲームを紹介します タートルの機能がいろいろ書いてあるサイト: https://docs.python.org/ja/3/library/turtle.html