In [1]:
import random
def win():
    print(
        '''
           ======恭喜你,你赢了=======


                ."".    ."",
                |  |   /  /
                |  |  /  /
                |  | /  /
                |  |/  ;-._
                }  ` _/  / ;
                |  /` ) /  /
                | /  /_/\_/\
                |/  /      |
                (  ' \ '-  |
                 \    `.  /
                  |      |
                  |      |

          ======恭喜你,你赢了=======
        '''
    )
def lose():
    print(
        '''
           ======YOU LOSE=======




                   .-"      "-.
                  /            \
                 |              |
                 |,  .-.  .-.  ,|
                 | )(__/  \__)( |
                 |/     /\     \|
       (@_       (_     ^^     _)
  _     ) \_______\__|IIIIII|__/__________________________
 (_)@8@8{}<________|-\IIIIII/-|___________________________>
        )_/        \          /
       (@           `--------`



          ======YOU LOSE=======
        '''
    )
#得到诗句的字表
def get_ch_table(line):
    ch_table = []
    for ch in line:
        if ch not in ch_table:
            ch_table.append(ch)
    return ch_table
#读取文件,分隔字符串,随机抽取诗句,
def idiom_robot(file_name):
    with open(file_name) as fh:
        text = fh.read()
    idioms = text.split()
    idiom = random.choice(idioms)
    chs = get_ch_table(text.replace('\n', ''))#得到诗句的字表
    guess_ch_table = [ch for ch in idiom]
    while len(guess_ch_table) < 12:#获取随机字表
        ch = random.choice(chs)
        if ch not in guess_ch_table:
            guess_ch_table.append(ch)
    random.shuffle(guess_ch_table)#乱序
    for i in range(0, 12, 4):
        print(guess_ch_table[i], guess_ch_table[i + 1],guess_ch_table[i + 2],guess_ch_table[i + 3])
    return idiom
def main():
    filename = r'd:\temp\idioms_correct.txt'
    score = 0
    while score >= 0:
        real_idiom = idiom_robot(filename)
        answer_idiom = input('请输入猜测诗句,回车结束,直接回车表示退出游戏:')
        if answer_idiom == real_idiom:
            print('答对了,加十分')
            score += 10
            print('你当前的分数是:', score)
            if score == 100:
                win()
                return
        elif answer_idiom == '':
            print('退出游戏。')
            print('你最后的分数是:', score)
            return
        else:
            score -= 10
            print('答错了,减十分')
            print('诗句其实是:', real_idiom)
            print('你当前的分数是:', score)
    else:
        lose()
        return
main()


河 犹 万 月
在 峰 今 城
里 要 长 阵
请输入猜测诗句,回车结束,直接回车表示退出游戏:万里长城今犹在
答对了,加十分
你当前的分数是: 10
阵 长 我 要
等 灭 入 我
灭 天 强 天
请输入猜测诗句,回车结束,直接回车表示退出游戏:天要灭我我灭天
答对了,加十分
你当前的分数是: 20
我 宇 透 长
冲 擎 香 等
天 阵 惧 安
请输入猜测诗句,回车结束,直接回车表示退出游戏:冲天香阵透长安
答对了,加十分
你当前的分数是: 30
视 闲 宇 等
殇 身 月 霸
英 八 香 内
请输入猜测诗句,回车结束,直接回车表示退出游戏:霸殇宇内视等闲
答对了,加十分
你当前的分数是: 40
始 在 见 秦
死 与 生 不
年 皇 当 天
请输入猜测诗句,回车结束,直接回车表示退出游戏:不见当年秦始皇
答对了,加十分
你当前的分数是: 50
风 灭 八 破
一 飘 碎 河
山 只 雄 絮
请输入猜测诗句,回车结束,直接回车表示退出游戏:山河破碎风飘絮
答对了,加十分
你当前的分数是: 60
城 天 长 年
在 与 权 里
今 犹 戟 万
请输入猜测诗句,回车结束,直接回车表示退出游戏:万里长城今犹在
答对了,加十分
你当前的分数是: 70
八 金 见 死
同 与 出 生
入 我 君 城
请输入猜测诗句,回车结束,直接回车表示退出游戏:出生入死与君同
答对了,加十分
你当前的分数是: 80
我 八 百 擎
要 花 花 杀
后 开 犹 天
请输入猜测诗句,回车结束,直接回车表示退出游戏:我花开后百花杀
答对了,加十分
你当前的分数是: 90
血 悔 身 化
无 君 金 碧
待 长 世 犹
请输入猜测诗句,回车结束,直接回车表示退出游戏:身化碧血犹无悔
答对了,加十分
你当前的分数是: 100

           ======恭喜你,你赢了=======


                ."".    ."",
                |  |   /  /
                |  |  /  /
                |  | /  /
                |  |/  ;-._
                }  ` _/  / ;
                |  /` ) /  /
                | /  /_/\_/                |/  /      |
                (  ' \ '-  |
                 \    `.  /
                  |      |
                  |      |

          ======恭喜你,你赢了=======
        

In [ ]: