本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
#!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个section,如:24530467103,将该数字拆分后,得到: # 245 3046 7103 (245亿3046万7103) # 对拆分后的数字先按照section进行数字到汉字的转换,然后添加数值单位,如:仟,佰,拾,处理结束后可以得到转换后的序列。 # 对section处理结束后,再对每个section进行单位的追加。如:兆、亿、万。 # 这里需要注意一些特殊情况,如:section中连续出现0,最后一个数字为0等。 DEBUG = True upper = [ "零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒" , "捌" , "玖" ] decimal_unit = [ "角" , "分" , "厘" , "毫" ] section_unit = [ "万" , "亿" , "兆" ] count_unit = [ "拾" , "佰" , "仟" ] def dbg_print(s): if DEBUG: print (s) def split_num(num): num_list = [] if ( len (num) < = 4 ): num_list.append(num) return num_list while ( len (num)): if ( len (num) < = 4 ): num_list.append(num) num_list.reverse() return num_list sec = num[ - 4 :] num_list.append(sec) num = num[: - 4 ] # 处理小数部分,只支持4位,多于4位,四舍五入。 def convert_dec(num): result = "" count = 0 dbg_print(num) for i in num: n = int (i) if ( 0 ! = n): result + = upper[n] result + = decimal_unit[count] count + = 1 dbg_print(result) return result # 处理整数部分 def convert_int(num): section_list = split_num(num) dbg_print(num) dbg_print(section_list) result = "" sec_index = len (section_list) - 2 for item in section_list: index = len (item) - 2 # 统计连续出现的数字0的个数。 flag = 0 # 计算遍历过的item中的字符数。 count = 0 # 对每个section进行处理,得到数字对应的汉字。 for i in item: n = int (i) if ( 0 = = n): flag + = 1 else : flag = 0 # 用来区分section的最后一位为0的情况 if (count ! = len (item) - 1 ): # 该位置的数字为0,并且它的下一个数字非0。 if ((flag > = 1 ) and ( '0' ! = item[count + 1 ])): result + = upper[n] else ( 0 ! = n): result + = upper[n] else : # section的最后一个数字非0的情况。 if ( 0 ! = n): result + = upper[n] # 最后一个数字以及数字为0时,都不需要添加单位。 if ((index > = 0 ) and ( 0 ! = n)): result + = count_unit[index] index + = 1 count + = 1 从第 1 个section开始,如果section中的数字不全为 0 ,其后就需要添加section对应的单位。 if (sec_index > = 0 and flag ! = count): result + = section_unit[sec_index] dbg_print(result) sec_index - = 1 result = result.replace( "壹拾" , "拾" ) result + = "元" return result # 转换函数 def convert(num): result = "" num = round ( float (num), 4 ) integer,decimal = str (num).split( '.' ) result_int = convert_int(integer) result_dec = convert_dec(decimal) if ( len (result_dec) = = 0 ): result = result_int + = "整" else : result = result_int + result_dec return result |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/yayawy/article/details/53670670