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
35
2020_k3_python講座第7回
tattsu_hitsuzi
0
32
2020_k3_python講座第6回
tattsu_hitsuzi
0
26
2020_k3_python講座第5回
tattsu_hitsuzi
0
60
2020_k3_python講座第4回
tattsu_hitsuzi
0
28
2020_k3_python講座第2回
tattsu_hitsuzi
0
40
2020_k3_python講座第1回
tattsu_hitsuzi
0
48
Other Decks in Education
See All in Education
OpenStreetMap概要説明 / Introducing OpenStreetMap
barsaka2
0
200
2024年度春学期 統計学 第3回 クロス集計と感度・特異度/データの可視化 (2024. 4. 25)
akiraasano
PRO
0
110
Sähköiset kyselyt, kokeet ja arviointi
matleenalaakso
1
16k
Data Representation - Lecture 3 - Information Visualisation (4019538FNR)
signer
PRO
1
1.7k
Data Processing and Visualisation Frameworks - Lecture 6 - Information Visualisation (4019538FNR)
signer
PRO
1
1.7k
情報Iの「縦糸」と「横糸」を意識したプログラム教育の実践
asial_edu
0
220
AI教育の未来『おもしろい』を作れる人材の育て方 #東京AI祭
o_ob
1
1.8k
墓までもっていくはずだった話
takuro_nakajima
PRO
0
1.6k
SDGsをアシスト! 現地調査データをアーカイブする技術2024|麻布大学デジタルマッピングワークショップ
fullfull
1
190
Multimodal Interaction - Lecture 3 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
1.1k
令和6年度 無料トライアルキャンペーン説明会
asial_edu
0
1.3k
Course Review - Lecture 12 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
1.3k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
21
4k
Being A Developer After 40
akosma
67
580k
The Pragmatic Product Professional
lauravandoore
26
5.9k
Rails Girls Zürich Keynote
gr2m
91
13k
Become a Pro
speakerdeck
PRO
13
4.6k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Gamification - CAS2011
davidbonilla
77
4.6k
Teambox: Starting and Learning
jrom
128
8.4k
GraphQLとの向き合い方2022年版
quramy
33
13k
4 Signs Your Business is Dying
shpigford
176
21k
Writing Fast Ruby
sferik
622
60k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
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