# ''''''''''''''''''''''''''''''
# 1. 導入 random 模組
# 2. (定義變數)取得 luncky number、隨機生成 1-100 的整數
# 3. (定義變數)生成記錄區間,上界及下界,迴圈控制變量
# 4. 遊戲開始
# 5. 請用戶輸入
# 6. 優先判斷是否打了 bye
# 7. 若沒有輸入 bye、轉換為 int 作下一階判斷
# 8. 用戶輸入的數字比較上下界
# ''''''''''''''''''''''''''''''
# 1. 導入 random 模組
import random
print("###### Game Start ######")
# 2. 取得 luncky number
# random.randint(1, 100) 會隨機生成 1-100 的整數
lucky_num = random.randint(1, 100)
# 測試輸出答案
print(lucky_num)
# 3. 生成記錄區間,上界及下界,控制變量
min = 1 # min 是用來控制用戶輸入的下界範圍
max = 100 # max 是用來控制用戶輸入的上界範圍
flag = True # flag 是用來控制迴圈的變量
while(flag):
print("------------------")
# 5. 請用戶輸入
# 由於我們需要優先判斷數字有"bye",因此先透過 temp 變數接收
temp = input(f"請輸入 {min} - {max} 的數字:")
# 6. 判斷是否打了 bye
if(temp == "bye"): # 判斷輸入的類型是否為字串
print("### Bye Bye ###")
flag = False # 迴圈會跳出
# 若沒有輸入 bye
else:
# 7. 轉換為 int 作下一階判斷
user_input = int(temp)
# 若輸入不正確,continue 重新輸入
if( (user_input < min) or (user_input > max) ):
print("### 輸入錯誤 ###")
continue # 重新開始迴圈,繼續請用戶輸入
# 8. 用戶輸入的數字比較上下界
if(user_input == lucky_num):
print("### 恭喜估中了!!! ###")
flag = False # 迴圈會跳出
elif(user_input > lucky_num):
print("再小一點")
max = user_input # 如果用戶輸入的數字大於 lucky_num,則將 max 設為用戶輸入的數字
elif(user_input < lucky_num):
print("再大一點")
min = user_input # 如果用戶輸入的數字小於 lucky_num,則將 min 設為用戶輸入的數字
print("###### End ######")
解答2
# 1. 導入 random 模組
import random
print("###### Game Start ######")
# 2. 取得 luncky number
# random.randint(1, 100) 會隨機生成 1-100 的整數
lucky_num = random.randint(1, 100)
# 測試輸出答案
print(lucky_num)
# 3. 生成記錄區間,上界及下界,控制變量
min = 1 # min 是用來控制用戶輸入的下界範圍
max = 100 # max 是用來控制用戶輸入的上界範圍
flag = True # flag 是用來控制迴圈的變量
while(flag):
user_input = input(f"請輸入 {min} - {max} 的數字") # string
if(user_input == "bye"):
print(f"結束遊戲,答案是{lucky_num}")
flag = False
else:
user_input = int(user_input)
if(user_input == lucky_num):
flag = False
print("恭喜你,估中了!!")
elif(user_input > lucky_num):
max = user_input
elif(user_input < lucky_num):
min = user_input
題目 3: 三角型的9x9乘法表
請嘗試以迴圈輸出:
思路
上半部分
當 i = 1 時,j 執行 1 次(1)
當 i = 2 時,j 執行 2 次(1、2)
當 i = 3 時,j 執行 3 次(1、2、3)
當 i = 4 時,j 執行 3 次(1、2、3、4)
...
當 i = 9 時,j 執行 9 次(由1、2、3、4、5、6、7、8、9)
外迴圈 i 的值由 1至9、每次+1內迴圈 j 的值由 1至i (j<=i)、每次+1
下半部分
當 i = 8 時,j 執行 8 次(1、2、3、4、5、6、7、8)
當 i = 7 時,j 執行 7 次(1、2、3、4、5、6、7)
當 i = 6 時,j 執行 6 次(1、2、3、4、5、6)
...
當 i = 2 時,j 執行 2 次(1、2)
當 i = 1 時,j 執行 1 次(1)
外迴圈 i 的值由 8至1、每次-1內迴圈 j 的值由 1至i (j<=i)、每次+1
While 迴圈版本
# 上半部份
i = 1
while(i <= 9):
j = 1
while(j <= i): # 關鍵邏輯 : 當 j <= i 時,才會有輸出
print(f"{i}x{j}={i*j:<3}", end="")
j = j + 1
print()
i = i + 1
# 下半部份
i = 8
while(i >= 1):
j = 1
while(j <= i): # 關鍵邏輯 : 當 j <= i 時,才會有輸出
print(f"{i}x{j}={i*j:<3}", end="")
j = j + 1
print()
i = i - 1
For 迴圈版本
# 上半部份
for i in range(1, 10): # i的值由 1->9
for j in range(1,10): # j的值由 1->9
if( j>i ):
continue # 在這個內迴圈中,break和continue最終效果一樣
print(f"{i}x{j}={i*j:<3}", end ="")
print()
# 下半部份
for i in range(8,0,-1): # i的值由 8->1
for j in range(1,9): # j的值由 1->8
if(j>i):
continue # 在這個內迴圈中,break和continue最終效果一樣
print(f"{i}x{j}={i*j:<3}", end="")
print()