1. 單一位置
編寫一個小遊戲,按列表中成語的順序輸出第一個字爲空白的成語,要求用戶填寫答案並回車可以判斷是否正確。正確輸出正確,你真棒~
,錯誤輸出錯了,正確答案:
。運行效果下圖所示。
示例代碼如下:
print("====成語填填樂====\n")
# idiom: 成語列表
idiom_list = ["閉月羞花", "國色天香", "傾國傾城", "貌美如花", "明眸皓齒",
"冰肌玉骨", "小家碧玉", "窈窕淑女", "天生麗質", "秀色可餐", "亭亭玉立"]
for idiom in idiom_list:
new_idiom = "__" + idiom[1:] # 構造第一個字爲空白的字符串: __月羞花
print(new_idiom)
word = input("輸入: ").strip() # 用戶輸入
if word == idiom[0]:
print("正確,你真棒~")
else:
print(f"錯了,正確答案: {idiom[0]}")
2. 位置隨機
編寫一個小遊戲,隨機輸出列表中的成語,同時將成語進行隨機位置輸出空格,要求用戶填寫答案,敲擊回車鍵,程序可以判斷是否正確。正確輸出正確,你真棒~
,錯誤輸出錯了,正確答案:
。運行效果下圖所示。
示例代碼如下:
import random
print("====成語填填樂====\n")
# idiom: 成語列表
idiom_list = ["閉月羞花", "國色天香", "傾國傾城", "貌美如花", "明眸皓齒",
"冰肌玉骨", "小家碧玉", "窈窕淑女", "天生麗質", "秀色可餐", "亭亭玉立"]
while len(idiom_list) > 0:
idiom = random.choice(idiom_list) # 隨機獲取列表中的一個成語
index = random.randint(0, 3) # 隨機產生索引
new_str = idiom.replace(idiom[index], "__", 1) # 構建一個帶空白的成語
print(new_str)
word = input("輸入: ").strip()
if new_str.replace("__", word) == idiom:
print("正確,你真棒~")
else:
print(f"錯了,正確答案: {idiom[index]}")
idiom_list.remove(idiom) # 移除已經填寫過的成語
3. 添加積分評價
編寫一個小遊戲,隨機輸出一條包含一個空格的成語,填寫完答案,回車,程序可以判斷是否正確。正確加2分,輸出正確,你真棒!
。錯誤減2分,輸出錯了,正確答案:
。什麼也不填忽略本成語,輸出過!
。本遊戲一共8關,遊戲完成輸出成績,選手原始分數爲20分,如下圖所示。
示例代碼如下:
import random
print("====成語填填樂====\n")
# idiom_list: 成語列表
idiom_list = ["閉月羞花", "國色天香", "傾國傾城", "貌美如花", "明眸皓齒",
"冰肌玉骨", "小家碧玉", "窈窕淑女", "天生麗質", "秀色可餐", "亭亭玉立"]
score = 20 # 原始分數
count = 1 # flag: 用來管控遊戲是否結束 >8 結束
print("直接填寫答案,回車進入下一關,什麼也不填忽略本成語!!!")
while True:
if count > 8: # 大於8結束遊戲
break
idiom = random.choice(idiom_list) # 隨機獲取列表中的一個成語
index = random.randint(0, 3) # 隨機產生索引
new_str = idiom.replace(idiom[index], "__", 1) # 構建一個帶空白的成語
print(new_str)
word = input("輸入: ").strip()
if new_str.replace("__", word) == idiom:
score += 2 # 答對+2分
print("正確,你真棒~")
elif not word:
print("過!")
continue
else:
score -= 2 # 答錯扣兩分
print(f"錯了,正確答案: {idiom[index]}")
count += 1
print(f"\033[1;31m選手最後得分: {score}\033[0m")
4. 文件獲取
在之前的成語填填樂(積分評價)
基礎上改進程序。將成語手動添加到列表中費時費事,可以將網絡中的成語複製到文本文件當中,使用時從文件中讀取後保存到列表,這樣可以極大豐富成語填填樂的內容,提升成語填填樂內容的深度和廣度。文本中成語保存方式如圖所示。
示例代碼如下:
5. 設置難度等級
在之前成語填填樂(文件讀取)
基礎上改進程序,增加難度等級。將成語文件分成9個等級,讓用戶選擇難度等級,程序根據難度等級調用對應的成語文件,實現成語填填樂(設置難度等級)
。成語文件包括idiom1.txt~idiom9.txt
。成語文件可以在我的百度網盤中獲取,鏈接如下:
鏈接:https://pan.baidu.com/s/1IlHjg2PXZ6kn4YwrH7a8JA
密碼:2tjl
程序運行效果如下圖所示。
示例代碼如下:
import random
print("====成語填填樂====\n")
print("""成語填填樂難度等級菜單
1: 一級菜單
2: 二級菜單
3: 三級菜單
4: 四級菜單
5: 五級菜單
6: 六級菜單
7: 七級菜單
8: 八級菜單
9: 九級菜單""")
level = input("請輸入成語填填樂難度等級菜單的數字,如: 3\n").strip()
file_name = "idiom" + level + ".txt"
with open(file_name, encoding="utf-8") as file:
idiom_list = file.readlines()
score = 20 # 原始分數
count = 1 # flag: 用來管控遊戲是否結束 >8 結束
print("直接填寫答案,回車進入下一關,什麼也不填忽略本成語!!!")
while True:
if count > 8: # 大於8結束遊戲
break
idiom = random.choice(idiom_list).strip() # 隨機獲取列表中的一個成語 strip()去除成語後的\n
index = random.randint(0, 3) # 隨機產生索引
new_str = idiom.replace(idiom[index], "__", 1) # 構建一個帶空白的成語
print(new_str)
word = input("輸入: ").strip()
if new_str.replace("__", word) == idiom:
score += 2 # 答對+2分
print("正確,你真棒~")
elif not word:
print("過!")
continue
else:
score -= 2 # 答錯扣兩分
print(f"錯了,正確答案: {idiom[index]}")
count += 1
print(f"\033[1;31m選手最後得分: {score}\033[0m")
6. 限時完成
在之前成語填填樂(設置難度等級)
基礎上改進程序,增加限時完成功能,要求用戶在90秒內完成遊戲,每完成一個成語,提示剩餘答題時間。答題超時提示答題超過90秒答題時間,將退出答題!
,並顯示選手得分,運行效果如下圖所示。
示例代碼如下:
import random
import datetime
print("====成語填填樂====\n")
print("""成語填填樂難度等級菜單
1: 一級菜單
2: 二級菜單
3: 三級菜單
4: 四級菜單
5: 五級菜單
6: 六級菜單
7: 七級菜單
8: 八級菜單
9: 九級菜單""")
level = input("請輸入成語填填樂難度等級菜單的數字,如: 3\n").strip()
file_name = "idiom" + level + ".txt"
with open(file_name, encoding="utf-8") as file:
idiom_list = file.readlines()
score = 20 # 原始分數
print("直接填寫答案,回車進入下一關,什麼也不填忽略本成語!!!")
remain = datetime.datetime.now() + datetime.timedelta(seconds=90) # 限時90秒完成
while True:
time_is = (remain - datetime.datetime.now()).seconds
if time_is > 90: # 答題時間超過90秒 遊戲結束
print("答題超過90秒答題時間,將退出答題!")
break
print(f"剩餘答題時間\033[1;31m{time_is}\033[0m秒")
idiom = random.choice(idiom_list).strip() # 隨機獲取列表中的一個成語 strip()去除成語後的\n
index = random.randint(0, 3) # 隨機產生索引
new_str = idiom.replace(idiom[index], "__", 1) # 構建一個帶空白的成語
print(new_str)
word = input("輸入: ").strip()
if new_str.replace("__", word) == idiom:
score += 2 # 答對+2分
print("正確,你真棒~")
elif not word:
print("過!")
continue
else:
score -= 2 # 答錯扣兩分
print(f"錯了,正確答案: {idiom[index]}")
print(f"\033[1;31m選手最後得分: {score}\033[0m")
7. 選擇填空
在之前成語填填樂(限時完成)
基礎上改進程序,實現程序選擇填空功能。成語隨機位置空格輸出需要選擇的一個字,隨機從所有成語的詞彙中選擇三個假答案,結合正確答案讓用戶選擇,用戶只需輸入正確答案前面的字母即可,如果輸入非 A、B、C、D,將提示輸入錯誤,將重新選擇!
,運行效果如下圖所示。