Pythonサンプルプログラム
チュートリアルを学習した次のステップとして,自由にプログラムを作ってみたいところですがなかなか難しい人も多いと思います。平方根や数列の計算のプログラミング例は教科書にも掲載されていますので,違うジャンルのプログラム例を示したいと思います。
事前に学習している前提の内容について
乱数を使ったゲームプログラム
IDLEシェル上でユーザからの入力を受け付け,入力内容に応じて処理を行うゲームです。乱数を使った処理,反復と分岐のプログラミングを学習できます。
- 数当てゲーム ランダムに決められた数字(1~100)を当てるゲームです。
- じゃんけんゲーム コンピュータとじゃんけんで勝負するゲームです。結果の判定に二次元配列を使用しています。
印刷用pdfファイル
Pythonプログラミング練習2_乱数.pdf - Google ドライブ
図形を描画するプログラム
タートルグラフィックを使って画面上に図形を描きます。線を引いてくれる亀への命令をプログラミングすることで制御構造の理解が深まります。また,結果が目に見えるのでプログラムの改造や試行錯誤の意欲が高まると思います。
(タートルグラフィックはIDLEが使える環境であれば追加インストールなしで使用できます)
印刷用pdfファイル
Pythonプログラミング練習3_Turtle.pdf - Google ドライブ
ソースコード
各ソースコードの説明は印刷用pdfファイルを参照してください。
数当てゲーム
# 数当てゲーム # ランダムに決められた数字(1~100)を当てる import random as rd # 正解時の画面表示処理 def disp_msg(count): msg = "" if count < 5 : msg = "Wonderful!" elif count < 10 : msg = "Great!" else: msg = "Good!" print(msg ,"正解です") return # メイン処理 print("**** 数当てゲーム ****") print("1-100の数字を入力してください。end入力で終了") ans = rd.randint(1,100) #print("[DBG] ans=",ans) cnt = 0 while True: num = input("数字を入力してください > ") if num == "end": break num = int(num) if num < ans : print("・・・もっと大きい") elif ans < num : print("・・・もっと小さい") elif ans == num : disp_msg(cnt) break else: print("[ERR] num=",num) cnt = cnt + 1
じゃんけんゲーム
# じゃんけんゲーム import random as rd str_hand = ["グー","チョキ","パー"] # result[ player ][ cpu ] 0:draw 1:p win 2:p lose result = [[0,1,2], [2,0,1], [1,2,0]] def play_game(): while True: c_hand = rd.randint(0,2) #print("[DBG] c_hand=",c_hand) str = input("0:グー 1:チョキ 2:パー > ") if str == "end": return False if str == "0" or str == "1" or str == "2": p_hand = int(str) else: print("0 1 2 のどれかを入力してください") continue print(" ***********************") print(" あなた:",str_hand[p_hand]," CPU:",str_hand[c_hand]) ret = result[p_hand][c_hand] if ret == 0 : print(" あいこです") elif ret == 1 : print(" *** あなたの勝ちです ***") break else: print(" *** あなたの負けです ***") break return True #メイン処理 print("じゃんけんゲーム end入力で終了") while play_game(): print(" ")
正六角形を描くプログラム
from turtle import * i = 0 while i < 6: forward(100) left(60) i = i + 1 done()
実行結果
星を描くプログラム
from turtle import * i = 0 while i < 5: forward(100) right(360*2/5) i = i + 1 done()
実行結果
角が7つの星を描くプログラム
from turtle import * i = 0 while i < 7: forward(100) right(360*3/7) i = i + 1 done()
実行結果
長野県のどこかの地域には,この星を歌に合わせて一筆書きで描く遊びがあると聞いたことがあります。コンピュータを使わずにフリーハンドで(一画目の向きも自由にして一筆書き)描く練習は子供から大人まで楽しめますので,退屈している児童・生徒に紙とペンを渡して教えてあげてください。
ユーザからの入力を受け付ける例
from turtle import * speed(0) k = int(input("数値 >")) n = 2*k+1 i = 0 while i < n: forward(200) right(360*k/n) i = i + 1 done()
※IDLEシェル画面で入力待ちになるので,数値を入力する。
画面のイベントを利用して線を引く
from turtle import * speed(10) onscreenclick(goto) done()
※画面をクリックした位置へ線が引かれる。
クリックした位置から円を描く
from turtle import * speed(10) def draw_circle(x,y): up() goto(x,y) down() circle(50) return onscreenclick(draw_circle) done()
線織面を描画するプログラム
直線で曲線を描きます。
from turtle import * speed(0) hideturtle() def line(sx,sy,dx,dy): up() goto(sx,sy) down() goto(dx,dy) sx = 0 sy = 200 dx = 10 dy = 0 while dx <= 200: line(sx,sy,dx,dy) sy = sy - 10 dx = dx + 10 done()
実行結果
線の色の変更
from turtle import * speed(0) hideturtle() pensize(2) colormode(255) r = 100 g = 50 b = 200 pencolor(r,g,b) def chgcolor(vr,vg,vb): global r,g,b r = (r + vr) % 255 g = (g + vg) % 255 b = (b + vb) % 255 pencolor(r,g,b) def line(sx,sy,dx,dy): up() goto(sx,sy) down() goto(dx,dy) sx = 0 sy = 200 dx = 10 dy = 0 while dx <= 200: line(sx,sy,dx,dy) chgcolor(-3,10,2) sy = sy - 10 dx = dx + 10 done()
実行結果