112學年度高雄中學 | 程式設計培訓增能計畫
2023年11月11日(六)
09:00 ~ 12:00
條件式: 項目一 比較運算 項目二 (條件成立 True / 條件不成立 False)
if 和 elif 都必須接條件式
print("Beebo: Let's hang out.")
weather = input("How is the weather? ")
if weather == "sunny":
print("(1) Sure. Why not?")
print("Beebo: Let's hang out.")
weather = input("How is the weather? ")
if weather == "sunny":
print("(1) Sure. Why not?")
else:
print("(2) I want to stay home.")
可以有多個 elif,都必須接條件式
print('L.Left')
print('R.Right')
print('U.Up')
print('D.Down')
op = input('> ').upper()
# 依選項輸出方向
if op == 'L':
print('Left')
elif op == 'R':
print('Right')
elif op == 'U':
print('Up')
elif op == 'D':
print('Down')
print('L.Left')
print('R.Right')
print('U.Up')
print('D.Down')
op = input('> ').upper()
# 依選項輸出方向
if op == 'L':
print('Left')
elif op == 'R':
print('Right')
elif op == 'U':
print('Up')
elif op == 'D':
print('Down')
else:
print('Wrong direction')
for i in range(7):
print(f'#{i}')
print('L.Left')
print('R.Right')
print('U.Up')
print('D.Down')
op = input('> ').upper()
# 依選項輸出方向
if op == 'L':
print('Left')
elif op == 'R':
print('Right')
elif op == 'U':
print('Up')
elif op == 'D':
print('Down')
else:
print('Wrong direction')
while True:
print('L.Left')
print('R.Right')
print('U.Up')
print('D.Down')
print('Q.Quit')
op = input('> ').upper()
# 依選項輸出方向或離開
if op == 'Q':
break
elif op == 'L':
print('Left')
elif op == 'R':
print('Right')
elif op == 'U':
print('Up')
elif op == 'D':
print('Down')
else:
print('Wrong direction')
rows = 4
cols = 3
nums = rows * cols
# 一維轉二維
for i in range(nums):
ri = i // cols
ci = i % cols
print(f'{i} -> ({ri}, {ci})')
rows = 4
cols = 3
nums = rows * cols
# 二維轉一維
for ri in range(rows):
for ci in range(cols):
i = ri * cols + ci
print(f'({ri}, {ci}) -> {i}')
import random
random.seed(1)
rows = 4
cols = 3
# 一維串列
alist = list(range(1, rows*cols+1))
print(*alist)
print()
# 洗牌
random.shuffle(alist)
print('1D-list')
print(*alist)
print()
# 一維亂數存到二維
atable = []
for ri in range(rows):
arow = []
for ci in range(cols):
arow.append(alist[ri*cols+ci])
atable.append(arow)
print('2D-table')
for row in atable:
print(*row)
import random
random.seed(1)
rows = 4
cols = 3
# 一維串列
nlist = list(range(1, rows*cols+1))
print(*nlist)
print()
# 二維亂數串列
atable = []
for ri in range(rows):
arow = []
for ci in range(cols):
# 從一維串列隨機選取一數存到二維中的一列
arow.append(nlist.pop(random.randrange(len(nlist))))
atable.append(arow)
print('2D-table')
for row in atable:
print(*row)
print()
# 串列合併
alist = []
for row in atable:
alist = alist + row
print('1D-list')
print(*alist)
print()
import os
import sys
import pygame
from pygame.locals import *
from random import randrange
# 背景色碼
def get_bgcolor():
R = randrange(64)
G = randrange(64)
B = randrange(64)
return (R, G, B)
# 前景色碼
def get_fgcolor():
R = randrange(224, 256)
G = randrange(224, 256)
B = randrange(224, 256)
return (R, G, B)
# 基本設定
os.environ['SDL_VIDEO_CENTERED'] = '1'
pygame.init()
surface = pygame.display.set_mode((400, 400))
fpsclock = pygame.time.Clock()
pygame.display.set_caption('Cover')
# 主迴圈
while True:
# 事件處理
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
# 視窗背景填色
surface.fill(get_bgcolor())
# 設定字型
font1 = pygame.font.SysFont('Times New Roman', 24, bold=True)
font2 = pygame.font.SysFont('Times New Roman', 20, italic=True)
font3 = pygame.font.SysFont('Consolas', 16)
# 產生文字圖形
text1 = font1.render('Pyone Code School', True, get_fgcolor())
text2 = font2.render('From Problem to Project', True, get_fgcolor())
text3 = font3.render('- Bug Chang', True, get_fgcolor())
# 繪製文字圖形
surface.blit(text1, (20, 20))
surface.blit(text2, (20, 60))
surface.blit(text3, (20, 100))
# 更新畫面
pygame.display.update()
# 每秒幀數
fpsclock.tick(1)
import os
import sys
from random import randrange
import pygame
from pygame.locals import *
# 顏色
# https://htmlcolorcodes.com/color-names/
BGCOLOR = (255, 250, 240)
SALMON = (250, 128, 114)
DODGERBLUE = ( 30, 144, 255)
DRAKORANGE = (255, 140, 0)
OLIVEDRAB = (107, 142, 35)
DARKCYAN = ( 0, 139, 139)
ORCHID = (218, 112, 214)
# 基本設定
os.environ['SDL_VIDEO_CENTERED'] = '1'
pygame.init()
surface = pygame.display.set_mode((400, 400))
fpsclock = pygame.time.Clock()
pygame.display.set_caption('Drawable')
surface.fill(BGCOLOR)
# 矩形
# rect(surface, color, rect)
# rect: x, y width, height
pygame.draw.rect(surface, SALMON, (50, 20, 40, 40))
pygame.draw.rect(surface, SALMON, (100, 20, 80, 40))
pygame.draw.rect(surface, SALMON, (190, 20, 40, 40), border_radius=4)
# 正圓與橢圓
# circle(surface, color, center, radius, width)
pygame.draw.circle(surface, DODGERBLUE, (60, 100), 10, 10)
pygame.draw.circle(surface, DODGERBLUE, (120, 100), 20, 20)
# ellipse(surface, color, rect)
pygame.draw.ellipse(surface, DRAKORANGE, (200, 90, 40, 20))
pygame.draw.ellipse(surface, DRAKORANGE, (260, 80, 20, 40))
# 線條
# line(surface, color, start_pos, end_pos, width)
pygame.draw.line(surface, OLIVEDRAB, (50, 200), (100, 200), 2)
pygame.draw.line(surface, OLIVEDRAB, (130, 150), (130, 200), 2)
pygame.draw.line(surface, OLIVEDRAB, (160, 200), (190, 150), 3)
pygame.draw.line(surface, OLIVEDRAB, (220, 150), (250, 200), 3)
# 多邊形或特別圖形
# 點的順序,影響構圖,同樣的點,順序不同,圖就不同
# polygon(surface, color, points, width)
# width=0 填滿顏色
# 平行四邊形
points = [(50, 300), (90, 350), (110, 300), (70, 250)]
pygame.draw.polygon(surface, DARKCYAN, points, 3)
# 六邊形
points = [(200, 300), (230, 250), (280, 250), (310, 300), (280, 350), (230, 350)]
pygame.draw.polygon(surface, ORCHID, points, 0)
# 三個三角形
points = [(280, 250), (310, 300), (200, 300), (230, 250), (280, 350), (230, 350)]
pygame.draw.polygon(surface, DARKCYAN, points, 0)
# 主迴圈
while True:
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
pygame.quit()
sys.exit()
pygame.display.update()
fpsclock.tick(1)
import os
import sys
from random import randrange
import pygame
from pygame.locals import *
# 顏色
# https://htmlcolorcodes.com/color-names/
BGCOLOR = (255, 255, 255)
COLORC = ( 0, 0, 0)
COLORT = (255, 255, 255)
# 基本設定
os.environ['SDL_VIDEO_CENTERED'] = '1'
pygame.init()
surface = pygame.display.set_mode((400, 400))
fpsclock = pygame.time.Clock()
pygame.display.set_caption('Points')
surface.fill(BGCOLOR)
font1 = pygame.font.SysFont('Consolas', 24)
# 頂點串列
points = []
stop = 1
# circle(surface, color, center, radius, width)
for x in range(60, 300+1, 60):
points.append((x, 100))
# 主迴圈
while True:
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
pygame.quit()
sys.exit()
# 繪製頂點
for p in points[:stop]:
x, y = p
pygame.draw.circle(surface, COLORC, (x, y), 20, 20)
text = font1.render(str(randrange(10)), True, COLORT)
surface.blit(text, (x-7, y-10))
stop += 1
pygame.display.update()
fpsclock.tick(1)
自由練習