用python设计一个菜单,可以人机对战或者机机对战进行成语接龙挑战,采用字典,将成语组织起来,以首字为键,成语为值,多个首字相同的放入一个集合
时间: 2024-05-24 14:14:33 浏览: 172
好的,以下是一个简单的成语接龙菜单程序,可以供参考:
```python
import random
# 成语字典,以首字为键,成语为值
idioms = {
'a': {'啊': None, '爱不释手': None, '安然无恙': None},
'b': {'百年大计': None, '宝刀不老': None, '半途而废': None},
'c': {'春风得意': None, '出奇制胜': None, '长驱直入': None},
'd': {'大言不惭': None, '断章取义': None, '东山再起': None},
'e': {'尔虞我诈': None, '恶贯满盈': None, '恩威并施': None},
'f': {'风华正茂': None, '凤凰于飞': None, '繁荣昌盛': None},
'g': {'高山流水': None, '孤掌难鸣': None, '孤注一掷': None},
'h': {'海阔天空': None, '横扫千军': None, '荒谬绝伦': None},
'j': {'金玉满堂': None, '精卫填海': None, '将心比心': None},
'k': {'开门见山': None, '口吐芬芳': None, '苦口婆心': None},
'l': {'兰亭序': None, '龙马精神': None, '两全其美': None},
'm': {'名列前茅': None, '面面俱到': None, '迷途知返': None},
'n': {'弄假成真': None, '年富力强': None, '宁死不屈': None},
'p': {'破釜沉舟': None, '平步青云': None, '披荆斩棘': None},
'q': {'千里之堤毁于蚁穴': None, '青出于蓝': None, '千姿百态': None},
'r': {'人浮于事': None, '如火如荼': None, '任重道远': None},
's': {'三位一体': None, '水到渠成': None, '世外桃源': None},
't': {'天马行空': None, '同舟共济': None, '谈笑风生': None},
'w': {'未雨绸缪': None, '无中生有': None, '无忧无虑': None},
'x': {'心悦诚服': None, '胸有成竹': None, '虚怀若谷': None},
'y': {'一路顺风': None, '以德服人': None, '有口皆碑': None},
'z': {'走马观花': None, '自由自在': None, '纸上谈兵': None}
}
# 人机对战函数
def human_vs_computer():
print('欢迎进行人机对战!')
while True:
# 随机选择一个首字母
initial = random.choice(list(idioms.keys()))
print('请以“{}”字开头,输入一个成语:'.format(initial))
# 等待用户输入
user_input = input()
# 判断输入的成语是否合法
if user_input not in idioms[initial]:
print('输入不合法,请重新输入。')
continue
# 选择一个以输入成语结尾的成语作为电脑回答
next_idiom = None
for idiom in idioms[user_input[-1]]:
if idiom != user_input and idiom not in idioms[initial]:
next_idiom = idiom
break
# 如果没有合适的成语可以回答,电脑认输
if next_idiom is None:
print('恭喜你,你赢了!')
break
print('电脑回答:{}'.format(next_idiom))
# 机机对战函数
def computer_vs_computer():
print('欢迎进行机机对战!')
# 随机选择起始首字母
initial = random.choice(list(idioms.keys()))
print('首个成语:{}'.format(random.choice(list(idioms[initial]))))
while True:
# 选择一个以上一个成语结尾的成语作为回答
next_idiom = None
for idiom in idioms[initial]:
if idiom != user_input and idiom not in idioms[initial]:
next_idiom = idiom
break
# 如果没有合适的成语可以回答,认输
if next_idiom is None:
print('电脑1认输,电脑2获胜!')
break
print('电脑1回答:{}'.format(next_idiom))
# 选择一个以回答成语结尾的成语作为下一个回答
initial = next_idiom[-1]
next_idiom = None
for idiom in idioms[initial]:
if idiom != user_input and idiom not in idioms[initial]:
next_idiom = idiom
break
# 如果没有合适的成语可以回答,认输
if next_idiom is None:
print('电脑2认输,电脑1获胜!')
break
print('电脑2回答:{}'.format(next_idiom))
# 主函数
def main():
print('欢迎来到成语接龙游戏!请选择游戏模式:')
print('1. 人机对战')
print('2. 机机对战')
while True:
mode = input()
if mode == '1':
human_vs_computer()
break
elif mode == '2':
computer_vs_computer()
break
else:
print('输入不合法,请重新输入。')
if __name__ == '__main__':
main()
```
在此程序中,我们使用了一个字典来存储成语,以首字母为键,成语为值,多个首字母相同的成语放入一个集合中。之后,我们分别实现了人机对战和机机对战的功能,并在主函数中提供了选择游戏模式的选项。
阅读全文