Updated on 2023-12-13 (水) 13:14:07 (136d)
  • 日立市女性若者支援課主催の講座に関するページです。
    • 『プログラミングについて学ぶ講座を開催します!』
    • 2023年度は締切・実施済み(11月14日〜12月12日までの5週)
flyer.jpg

講座で参考とするページ

プログラミング環境 JupyterLab Desktop

プログラム例

import random
from PIL import Image, ImageDraw # 描画機能
import matplotlib.pyplot as plt  # 文字以外の表示機能

size = 11 # サイズ(縦横のマスの数)
image = Image.new( "RGB",(size*10,size*10),"gray" )
draw = ImageDraw.Draw(image)

maze = [[0]*size for _ in range(size)] # リストのリスト
for n in range (size):
        maze[n][0] =      1 # 上の枠
        maze[n][size-1] = 1 # 下の枠
        maze[0][n] =      1 # 左の枠
        maze[size-1][n] = 1 # 右の枠
    
for x in range(1,size-1):
    for y in range(1,size-1):
        if( x%2==0 and y%2==0 ): # 柱の場所か?
            maze[x][y] = 1 # 柱を置く
        else:
            if( random.randint(0,100)<30): # 乱数
                maze[x][y] = 1 # 追加の壁を置く

for x in range(size):
    for y in range(size):
        if( maze[x][y] == 1 ):
            draw.rectangle([x*10,y*10,x*10+8, y*10+8],
                           fill="lightgray")
plt.imshow( image )
plt.show()

RunLenth

from PIL import Image, ImageDraw
import matplotlib.pyplot as plt
grid = 20
image = Image.new( "RGB", (8*grid,8*grid), "lightgray" )
draw = ImageDraw.Draw(image)

data = [[1,6,1], # 自分の用紙のデータを使う
        [0,8], 
        [0,2,4,2], 
        [0,3,2,3], 
        [0,3,2,3], 
        [0,2,4,2], 
        [0,8], 
        [1,6,1] ]
for y in range(8): # 上から8行
    color = 0 # 白=0からスタート
    x = 0 # 左端からスタート
    for run in data[y]:
        for n in range(run): # 連続する回数
            if( color == 1 ): # 黒?
                draw.rectangle([x*grid,y*grid, # ■を描く
                               (x+1)*grid-2,(y+1)*grid-2],
                               fill="black")
            x = x+1 # 1つ右へ
#        color = 1-color # 白/黒を交換
        if( color==0 ):
            color = 1
        else:
            color = 0
plt.imshow( image )
plt.show()

バブルソート

from PIL import Image, ImageDraw
import matplotlib.pyplot as plt
import random

num = 20
image = Image.new( "RGB", (200,100), "gray" )
draw = ImageDraw.Draw(image)
data = [random.randint(0,101) for _ in range(num)]

for done in range(num): # 最初から最後まで
    draw.rectangle([0,0,200,100],fill="gray") # 画像クリア
    for n in range(num-done-1): # 未確定の範囲でループ
        if( data[n]>data[n+1]): # 大きいものは後ろへ
            data[n],data[n+1] = data[n+1],data[n]

    for x in range(num): # 最初から最後まで
        if( x+done>=num ): # 確定部分は青
            draw.rectangle([x*10,0,x*10+5,data[x]],
                           fill=(0,0,255))
        else: # まだのところはピンク
            draw.rectangle([x*10,0,x*10+5,data[x]],
                           fill=(255,128,128))
    out = image.transpose(Image.FLIP_TOP_BOTTOM) # 上下を逆に
    plt.imshow( out )
    plt.show()
    key = input() # キー入力を待つ