Python プログラミング練習(サンプルプログラム)

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()

実行結果

関連記事

 Pythonで棒グラフ等を表示したいときは他の記事を参考にしてください。
 Python 度数分布表をヒストグラムで表す - 勉強ボックス管理者ブログ

 
kinutani.hateblo.jp