04_流程控制

if-elif-else

  • 三種判斷條件
# 引入random模組隨機選一種天氣
from random import choice
weathers = ["晴天", "多雲", "毛毛雨", "狂風", "暴雨", "下雪", "打雷閃電"]
w = choice(weathers)
if w == '晴天' or w == '多雲':
	print('到戶外跑步')
elif w == '毛毛雨':
	print('去健身房')
else:
	print('在家當沙發馬鈴薯')

搭配迴圈使用

黑名單處理

mail_list = ['andy@gmail.com', 'ben@gmail.com', 'chris@gmail.com', 'eric@gmail.com']
blocked_list = ['andy@gmail.com', 'chris@gmail.com']
# 預計要寄信的名單
tomail_list = []
for m in mail_list:
	if m in blocked_list:
		# 如果此名單有在blocked_list名單內,跳過這圈迴圈
		continue
	tomail_list.append(m)
print(tomail_list)
# ['ben@gmail.com', 'eric@gmail.com']

max(), min()函數背後的原理

nums = [3, 20, -4, 299]

# 預設max數字為nums[0]
max_num = nums[0]
# 預設min數字為nums[0]
min_num = nums[0]
for num in nums:
	if num > max_nums: max_num = num
	if num < min_nums: min_num = num
print(max_num) # 299
print(min_num) # -4

# 找出中位數
# 先排序
nums.sort()
# 取得中間位置索引值
i = len(nums) // 2
if len(nums) % 2 == 0:
	# 資料數為偶數,取中間兩位相加除以2
	median_num = (nums[mid] + nums[mid - 1]) / 2
else:
	# 資料數為奇數,取中間值
	median_num = nums[mid]
print(median_num)  # 11.5

列出1到50的質數

'''
質數定義為只能被自己跟1整除
'''
# 使用一個變數儲存結果
prime_nums = []
# 檢查1到50的數字
for n in range(1, 51):
	# 列出各自的1以及自己以外的數字
	factors = [f for f in range(2, n)]
	# 先假定n是質數
	prime = n
	# 遍歷n底下的數字
	for f in factors:
		# 如果n可以被其中一數字整除
		if n % f == 0:
			# n 不是質數,使用None設定變數
			prime = None
			# 終止此內部迴圈
			break
	# 如果prime有值(不是None),將變數加到prime_nums
	if prime: prime_nums.append(prime)
# 印出結果
print(prime_nums)	

終極密碼猜1到100

from random import choice
ult_num = choice(range(1, 101))
# 預設遊戲繼續
game = True
while game:
	ans = int(input('猜終極密碼是多少: '))
	if ans > ult_num: 
		print('小一點')
	elif ans < ult_num: 
		print('大一點')
	else:
		print(f'恭喜猜對,終極密碼是{ult_num}')
		game = False

與電腦猜拳3勝者為贏家

from random import choice
rule = ['剪刀', '石頭', '布']
game = True
# 紀錄局數
i = 1
result = []
while game:
	print(f'第{i}局開始')
	# 使用try, except檢查輸入值是否為整數
	try:
		player = int(input('輸入一個數字出拳 [1]剪刀; [2]石頭; [3]布: '))
	except ValueError:
		print('請輸入一個整數')
	print(f'玩家出{rule[player - 1]}')
	com = choice(range(3))
	print(f'電腦出{rule[com]}')
	if com == player - 1:
		print('雙方平手')
		result.append('t')
	elif (com + 2) % 3 == player -1:
		print('電腦獲勝')
		result.append('l')
	else:
		print('玩家獲勝')
		result.append('w')
	win = result.count('w')
	lose = result.count('l')
	tie = result.count('t')
	print(f'目前戰績玩家{win}勝,電腦{lose}勝,平手{tie}次')
	print('=' * 35)
	i += 1
	if win == 3:
		print(f'遊戲結束,玩家獲勝')
		game = False
	if lose == 3:
		print(f'遊戲結束,電腦獲勝')
		game = False

Written with StackEdit.