2023年度 †
- 日立市女性若者支援課主催の講座に関するページです。
- 『プログラミングについて学ぶ講座を開催します!』
- 2023年度は締切・実施済み(11月14日〜12月12日までの5週)
講座で参考とするページ †
プログラミング環境 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() # キー入力を待つ