本文实例为大家分享了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
|
# -*- coding: utf-8 -*-
def changenum( change_number ):
format_num = [ "零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒" , "捌" , "玖" ]
format_name = [ "分" , "角" , "元" ,
"拾" , "百" , "千" , "万" ,
"拾" , "百" , "千" , "亿" ,
"拾" , "百" , "千" , "万" ,
"拾" , "百" , "千" , "兆" ]
if type ( change_number ) = = str :
if '.' in change_number:
try : change_number = float ( change_number )
except : raise ValueError, '%s can\'t change' % change_number
else :
try : change_number = int ( change_number )
except : raise ValueError, '%s can\'t change' % change_number
if type ( change_number ) = = float :
real_numbers = []
for i in range ( len ( format_name ) - 3 , - 3 , - 1 ):
if change_number > = 10 * * i or i < 1 :
real_numbers.append( int ( round ( change_number / ( 10 * * i ), 2 ) % 10 ) )
elif isinstance ( change_number, ( int , long ) ):
real_numbers = [ int ( i ) for i in str ( change_number ) + '00' ]
else :
raise ValueError, '%s can\'t change' % change_number
zflag = 0 start = len (real_numbers) - 3
change_words = []
for i in range (start, - 3 , - 1 ):
if 0 <> real_numbers[start - i] or len (change_words) = = 0 :
if zflag:
change_words.append(format_num[ 0 ])
zflag = 0
change_words.append( format_num[ real_numbers[ start - i ] ] )
change_words.append(format_name [i + 2 ])
elif 0 = = i or ( 0 = = i % 4 and zflag < 3 ):
change_words.append(format_name [i + 2 ])
zflag = 0
else :
zflag + = 1
if change_words[ - 1 ] not in (format_name[ 0 ], format_name[ 1 ]):
change_words.append( "整" )
return ''.join(change_words)
#测试
# print changenum(865324.98)
#查看输出的结果是否正确
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/haeasringnar/article/details/79523836