BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #16135同步于 2016/9/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

[问题]刚学几天的小白请各位大神纠错指导

leaveforever
2016/9/22镜像同步14 回复
用python实现输入一串没有空格的拼音,输出对应的汉字。拼音和汉字的对照表字典是自己写的,可以直接读取文件。 我的思路是:一个汉字最多由6个拼音组成,我写了6个txt文件,分别储存1个拼音到6个拼音构成的汉字,方便之后查找遍历(感觉这个方法很笨拙,请各位批评指导)。 然后读取字符串,从第一个字符判断,遍历第一个txt文件,如果有匹配的汉字,就保存,否则读取两个字符,遍历第二个txt文件,直到6个txt文件被遍历完。 记录此时的位置,然后这个位置开始,之后的字符也是从1个拼音判断到6个拼音,直到遍历完。 写了6个循环觉得是很拙劣的方法,并且还没有,不知道自己是逻辑错误还是思路错误还是别的,请各位不吝赐教,非常感谢。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
bdyzhy9527机器人#1 · 2016/9/22
会不会有这样的情况 shuangbo 按你的思路会判断出来shuan 然后gbo就不可能有了
andlase机器人#2 · 2016/9/23
这和拼音输入法会遇到的问题一样吧。。。比如xian到底是西安还是咸呢?
leaveforever机器人#3 · 2016/9/23
结果是一个汉字都无法输出,我在想是不是思路错了 【 在 bdyzhy9527 (码代码的码) 的大作中提到: 】 : 会不会有这样的情况 shuangbo 按你的思路会判断出来shuan 然后gbo就不可能有了
leaveforever机器人#4 · 2016/9/23
你说的有道理诶,有可能前面六个循环中对于xi有对应汉字xian也有对应汉字,但我已经根据自己的字典里才有的汉字进行拼音输入了,还是一个汉字都无法输出 【 在 andlase (andlase) 的大作中提到: 】 : 这和拼音输入法会遇到的问题一样吧。。。比如xian到底是西安还是咸呢?
y13269488633机器人#5 · 2016/9/23
输入的时候就错了,input返回的是数字,想读取字符串应该使用raw_input。 然后如果你python的版本低于3.x,应考虑Unicode编码问题的问题,第一行加上# coding=utf-8 多说一点个人经验: 遇到这种问题可以单步调试,或者在关键位置打印信息。这比肉眼观察更快更直观。 python版本变化比较大,网上的资料比较杂。建议入手一本有代码详解的工具书,系统的学习一下可能会好些
y13269488633机器人#6 · 2016/9/23
再补充一下,既然你已经根据拼音长度分成了几个文件存储,为什么不用switch case根据输入字符串长度直接搜索对应文件呢。
FromSixToTen机器人#7 · 2016/9/23
宝贝为何不用哈希表。 【 在 leaveforever 的大作中提到: 】 : 用python实现输入一串没有空格的拼音,输出对应的汉字。拼音和汉字的对照表字典是自己写的,可以直接读取文件。 : 我的思路是:一个汉字最多由6个拼音组成,我写了6个txt文件,分别储存1个拼音到6个拼音构成的汉字,方便之后查找遍历(感觉这个方法很笨拙,请各位批评指导)。 : 然后读取字符串,从第一个字符判断,遍历第一个txt文件,如果有匹配的汉字,就保存,否则读取两个字符,遍历第二个txt文件,直到6个txt文件被遍历完。 : ...................
leaveforever机器人#8 · 2016/9/23
谢谢你,我用的是3.5.2版本input可以读取字符,可能是我字典设计的不太好,我想想switch case怎么用[ema3][ema3] 【 在 y13269488633 (二十二画生) 的大作中提到: 】 : 再补充一下,既然你已经根据拼音长度分成了几个文件存储,为什么不用switch case根据输入字符串长度直接搜索对应文件呢。
leaveforever机器人#9 · 2016/9/23
宝贝不会用哈希表,我去查查哈~ 【 在 FromSixToTen (【意涵困】|【若晨困】|【贝由困】链域) 的大作中提到: 】 : 宝贝为何不用哈希表。