Updated on 2024-11-14 (木) 17:59:51

2023年度

  • 日立市女性若者支援課主催の講座に関するページです。
    • 『プログラミングについて学ぶ講座を開催します!』
    • 2023年度は締切・実施済み(11月14日〜12月12日までの5週)
&attachref(../flyer.jpg,nolink,60%);

講座で参考とするページ

プログラミング環境 JupyterLab Desktop

プログラム例

#codeprettify{{ 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

#codeprettify{{

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

バブルソート

#codeprettify{{

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() # キー入力を待つ

}}