Python——输入姓名,返回姓名笔画小程序

因为要做选票,选票候选人要按照姓氏笔画排序,正好自己在学习Python,就想着写一个返回姓名笔画的程序,程序基本实现了功能,但用户体验可能做的不好,后续有时间再修改吧!

核心思想还是查表,表是从字母对照表是从github下载的,地址都写在参考内:

参考:

https://github.com/ouyangpeng/ChineseStrokeSorting  (github地址,java程序,我只用了.db数据库文件)

https://blog.csdn.net/ouyang_peng/article/details/83863693  (作者博客内容)

https://www.zhihu.com/question/54446606/answer/144841484   (知乎里一个类似的回答)

https://blog.csdn.net/weixin_40283816/article/details/84227705  (判断数值是否在array内)

https://www.cnblogs.com/zhanghengyu/p/11121160.html  (字符串去空格)

数据库文件百度网盘链接地址:

链接:https://pan.baidu.com/s/10GHONzh7RvNEgLGs5zDNbg
提取码:hyv9

import sqlite3  #使用sql数据库
import numpy as np
conn = sqlite3.connect('ChinessStroke.db')  #文件可以下载我上传的,也可从github下载
print ("Opened database successfully")

c = conn.cursor()
c.execute('select * from BI_HUA_BEAN') # BI_HUA_BEAN 这个数据库存储的就是笔画表
#c.execute("select name from sqlite_master where type='table' order by name")
list = c.fetchall()
list = np.array(list)
#print(list[:,3] == '30002')
#print(list[:,3])
#print(type(list))
#a = '甲'
#print(ord(a))

while True:

    str_in = input('请输入姓名(按q结束):')

    if str_in == 'q':
        break

    str = str_in
    # print(str_in.split())
    # str = ''.join(str_in.split())

    stroke = 0  # 初始化姓名笔画

    for i in str:
        num = ord(i) #使用汉字的unicode来匹配
        print(num)
        equal_to_num = (list[:, 3] == '%d' % num)
        stroke += int(list[equal_to_num, 2])
        print(list[equal_to_num, :])

    print('%s的笔画为:%d'%(str,stroke))

 

 

 

你可能感兴趣的:(python学习)