大写数字转小写数字可即用
源代码来自https://blog.csdn.net/qfire/article/details/81739128?ops_request_misc=
我只是做了修改添加了文字提醒、加了个input接收需要转换的数字、添加了单位元/圆。加了个while循环,就这些了,用pyinstaller -F 封装就能用。
print('''大写转小写最大支持到(兆)位
支持数字大写及中文大写(例:九和玖)
不支持小写转大写(ps:因为没有能给我复制粘贴的╮(╯﹏╰)╭)''')
# constants for chinese_to_arabic
CN_NUM = {
'〇' : 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五' : 5, '六' : 6, '七' : 7, '八' : 8, '九' : 9, '零' : 0,
'壹' : 1, '贰' : 2, '叁' : 3, '肆' : 4, '伍' : 5, '陆' : 6, '柒' : 7, '捌' : 8, '玖' : 9, '貮' : 2, '两' : 2,
}
CN_UNIT = {
'圆' : 1,
'元' : 1,
'十' : 10,
'拾' : 10,
'百' : 100,
'佰' : 100,
'千' : 1000,
'仟' : 1000,
'万' : 10000,
'萬' : 10000,
'亿' : 100000000,
'億' : 100000000,
'兆' : 1000000000000,
}
def chinese_to_arabic(cn:str) -> int:
unit = 0 # current
ldig = [] # digest
for cndig in reversed(cn):
if cndig in CN_UNIT:
unit = CN_UNIT.get(cndig)
if unit == 10000 or unit == 100000000:
ldig.append(unit)
unit = 1
else:
dig = CN_NUM.get(cndig)
if unit:
dig *= unit
unit = 0
ldig.append(dig)
if unit == 10:
ldig.append(10)
val, tmp = 0, 0
for x in reversed(ldig):
if x == 10000 or x == 100000000:
val += tmp * x
tmp = 0
else:
tmp += x
val += tmp
return val
xh = 1
while xh == 1:
print('''\n只输入数额,不输入(人民币)等,不支持(元,圆)之下的单位
例:陆仟贰佰陆拾陆圆''')
shue = input('输入数额*可以复制粘贴呦( ̄▽ ̄):')
# TODO: make a full unittest
def test():
test_dig = [shue]
for cn in test_dig:
x = chinese_to_arabic(cn)
print('( ・´ω`・ )结果出来啦 :'+ str(x))
if __name__ == '__main__':
test()
xh = 1