先祝大家新的一年:龙行龘龘,前程朤朤!
龙年当然要玩成语接龙啦!这是龙的传承与创新(话说龙辰辰真的好可爱哇)
成语接龙游戏规则:
- 必须是成语;
- 除了第一个,后面每次接龙的成语必须是前一个成语的最后一个字相同的拼音。
管你听没听懂,玩就完了!
1. 龙年主题界面
共有五个功能,设计的功能均与龙有关。
2. 龙腾虎跃–开始游戏
龙飞凤舞的逻辑代码如下:首先保证输入的必须是一个四字成语,且成语存在于我已经在网上下载好的一份成语文件中,如果输入正确,便由计算机开始第一个成语接龙,在guess
函数中实现成语接龙的代码。
if choice == "1":
word = input("请输入一个成语:")
if word == "exit":
print("欢迎下次再来玩成语接龙")
break
while word != "exit":
word = word.strip() # 去掉空格
word = word.encode('utf-8').decode('utf-8') # 转换为统一的编码
if not is_chinese(word): # 检查是否为汉字
print("请输入汉字。")
word = input("请输入一个成语:")
continue
if word not in [i[0] for i in data]: # 检查是否存在于数据中
print("没有这个成语,请重新输入。")
word = input("请输入一个成语:")
continue
if len(word) != 4: # 检查是否是四字成语
print("请输入四字成语。")
word = input("请输入一个成语:")
continue
score += 1
print("是一个正确的成语呢,您真棒,分数加一")
result = guess(word)
print(result)
print("*****请继续操作*****")
print("1. 继续玩")
print("2. 不玩了")
choice1 = input("请输入您的选择:")
if choice1 == '1':
word = input("请输入一个成语:")
else:
print("下次再来哦")
break
guess
函数代码如下:
首先由get_all_starts_with
函数根据一个汉字的拼音,从数据中找出所有以该拼音开头的成语,并返回一个列表作为所有匹配的成语,当列表不为空的时候,在列表中随机选择一个成语返回即可,当列表为空时,就返回"没有找到以你输入成语开头的成语,请换一个成语试试",也就是输了的意思,但是为了保证提升您使用成语能力,到目前为止,游戏并不会结束,当你换了一个成语输入时,就会进行下一轮判断。
def guess(word):
all_data_matched = get_all_starts_with(word)
if all_data_matched: # 如果列表不为空
result_data = format_data(get_random_result(all_data_matched))
return result_data
else: # 如果列表为空
return "没有找到以%s开头的成语,请换一个成语试试。" % word[-1]
def get_all_starts_with(letter):
"""
根据一个汉字的拼音,从数据中找出所以以该拼音开头的成语,并返回一个列表
"""
result = []
target_pinyin = lazy_pinyin(letter)
target_pinyin_first = target_pinyin[-1] # 成功获取目标字的最后一个字的拼音
for i in data:
data_word = i[0]
data_pinyin = i[1]
data_meaning = i[2]
data_pinyin_first = data_pinyin[0] # 获取数据中的成语的第一个字的拼音
if data_pinyin_first == target_pinyin_first: # 比较拼音是否相同
result.append([data_word, data_meaning])
return result
3. 龙马精神–查看成绩
代码初始化了一个score
变量用来存储成语接龙的成绩,当查看成绩时,就输出此成绩即可。
4. 龙争虎斗–查看获得的奖项
“龙争虎斗”的代码如下,根据获得的成绩输出对应的获得的奖项。
elif choice == '3':
if score < 3:
print("恭喜获得“望子成龙”--参与奖")
elif score < 5:
print("恭喜获得“龙腾虎跃”--优秀奖")
elif score < 8:
print("恭喜获得“龙马精神”--三等奖")
elif score < 10:
print("恭喜获得“龙争虎斗”--二等奖")
elif score > 10:
print("恭喜获得“龙飞凤舞”--一等奖")
os.system("pause")
5. 龙潜凤采–查看所有成语
“龙潜风采”将之前从文件中获取的所有成语创建为一个DataFrame
对象,打印整个DataFrame
就可以输出所有成语,供游戏者学习,每次打印50个成语,学习完这些成语后,会询问游戏者是否继续学习,知道成语全部显示完毕。
elif choice == '4':
df = pd.DataFrame(data, columns=['成语', '拼音', '解释']) # 创建一个DataFrame对象,指定列名
# 分页显示 DataFrame
rows_per_page = 50
page = 1
while True:
# 计算要显示的行数
start = (page - 1) * rows_per_page
end = start + rows_per_page
# 将 DataFrame 转换为字符串并输出
print(df.iloc[start:end].to_string(index=False))
# 询问用户是否继续查看下一页
choice = input('查看下一页?(y/n) ')
# 如果用户选择退出,则结束循环
if choice.lower() == 'n':
break
# 否则,显示下一页
page += 1
os.system("pause")
6. 龙凤呈祥–祝福语
祝您龙年吉祥,祥龙献瑞,瑞气盈门,门庭若市,市井传声,声名远扬,扬眉吐气,气宇轩昂,昂首阔步,步步高升,升官发财,财源广进,进退有度!
7. 龙驭上宾–退出游戏
当游戏者不想玩游戏的时候,便可以输入0退出游戏。
8. 絮絮叨
最近在学python,就写了一个这样的游戏锻炼一下,希望你喜欢。
github地址:https://github.com/lpdbz/IdiomRelay
标签:龙年大吉,word,pinyin,接龙,print,data,祝您,成语 From: https://blog.csdn.net/m0_46069937/article/details/135982719