zoukankan      html  css  js  c++  java
  • python——成语接龙小游戏

    小试牛刀的简易成语接龙。

    思路——

    1、网上下载成语字典的txt版本

    2、通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快)

    3、python程序,查找 用户输入的最后一个字和字典里首字一致的,放入列表,并通过random进行随机选择,然后输出

    字典整理部分:转换成字典

    file = open(r'D:Desktopzidian.txt').readlines()
    f = open(r'D:Desktopzidian3.txt','w')
    x={}
    num = 0
    for i in file:
        print i[2:10]
        x[num] = i[2:10]
        f.write("'%s':u'%s',
    "%(num,i[2:10]))
        num+=1
    f.close()

    转换成字典——类似格式

    chengyu = {

    '0':u'阿党比周',
    '1':u'阿平绝倒',
    '2':u'阿权膴仕',
    '3':u'阿时趋俗',
    '4':u'阿世媚俗',
    '5':u'阿世取容'……}

    判断部分:通过input获取成语,然后截取最后一个字,在字典中寻找该字开头的成语,并输出。加入try,except,防止找不到成语的错误。(字典不全,只有20000+数据)

    while 1:
        list = []
        s =raw_input('请输入成语:')
        ns = s.decode('gbk')[-1:]
        try:
            for i in chengyu.values():
                ni = i[:1]
                if ns == ni:
                    list.append(i)
            print u'接龙:',len(list),random.choice(list)
    
        except:
            print u'接龙:是在下输了'
    

    效果图:没有进行优化处理,没有判断用户输入是否输入正确成语。 

    程序比较简易,主要困难在于编码的转换,困惑了很久。

    1、判断字是否相等的时候,如果编码格式不一致,是不能比较的,会发生错误。str是gbk编码,先解码成unicode,然后在进行比较。 

    2、如果不知道编码,可使用isinstance(s, unicode)判断,或者import  chardet,然后用chardet.detect(TestData)查询格式(偶然看到关于编码,这里有比较好的说明http://www.cnblogs.com/drsnow/p/7017129.html)

    3、先解码s.decode('gbk')[-1:],和s[-1:].decode('gbk')是不一样的效果,前者是对的,后者也会出错

  • 相关阅读:
    【Canal源码分析】Canal Instance启动和停止
    【Canal源码分析】Canal Server的启动和停止过程
    【Canal源码分析】parser工作过程
    【源码分析】Canal之Binlog的寻找过程
    otter代码在IDEA远程DEBUG方法
    【源码】otter工程结构
    一个Java程序员的2018年展望与2017年总结
    【源码解析】Sharding-Jdbc的执行过程(一)
    IntelliJ IDEA 调试 Apache RocketMQ 源码
    [源码分析]HashSet 和LinkedHashSet
  • 原文地址:https://www.cnblogs.com/vhills/p/7000791.html
Copyright © 2011-2022 走看看