【Python】练习1-数字人民币转大写

‘’'输入一个浮点数作为处理对象,将浮点数转为人民币大写形式。
例如:输入:123.45
输出:壹佰贰拾叁元肆角伍分
其中有一些多余的print()函数,用于调试过程中的输出,建议初学者多使用此类输出,便于发现程序中的Bug。

'''输入一个浮点数作为处理对象,将浮点数转为人民币大写形式。
   例如:输入:123.45
		输出:壹佰贰拾叁元肆角伍分
	其中有一些多余的print()函数,用于调试过程中的输出,建议初学者多使用此类输出,便于发现程序中的Bug。

'''

num = float(input("请输入需要转换的数字:"))

# 定义数字拆分函数
def diving(num):
	#分离整数部分,float转换为int自动取整数部分-不四舍五入
	integer=int(num)
	#分离小数部分,取整函数round,四舍五入
	fraction=round((num-integer)*100)
	return(integer,fraction)
	
integer,fraction=diving(num)
print(integer,fraction)

#拆分函数(将数字部分分解成元素数组)
def element_diving(element):
	element_str=str(element)
	element_list=[]
	for x in element_str:
		element_list.append(x)	
	return(element_list)     
	                                                                                               
#建立整数、小数部分元素列表
integer_list=element_diving(integer)
fraction_list=element_diving(fraction)
print(integer_list)
print(integer_list[0])
print(fraction_list)



#整数数组分组(4位一组)
def integer_group(integer_list):
	integer_group=[]
	lens=len(integer_list)
	n=int(lens/4)
	m=int(lens%4)
	if m>0:
		for i in range(0,(4-m)):
			integer_list.insert(0,'0')
		n+=1
			
	i=0
	while i<n:
		j=0
		a_str=''
		while j<4:
			a_str=a_str+integer_list[i*4+j]
			j+=1
		integer_group.append(a_str)
		i+=1

		
		
	return(integer_group)
'''
def integer_group(integer_list):
	lens=len(integer_list)
	n=lens/4
	integer_group=list(range(0,n))
	i=0
	while i<n:
		integer_group[i]=integer_list(i:4i)
		
	
'''
#整数分组后的变量integer_group	
integer_group=integer_group(integer_list)
print(integer_group)

fraction_unit=['角','分']


def four_read(four_ele_str):
	table=str.maketrans('0123456789','零壹贰叁肆伍陆柒捌玖')
	integer_unit1=['仟','佰','拾','']
	four_ele_str=four_ele_str.translate(table)
	finial_str=''
	i=0
	while i<4:
		if four_ele_str[i]=='零' and i==0:
			i+=1
			finial_str='零'
			continue
			
		elif four_ele_str[i]=='零':
			i+=1
			finial_str=finial_str+'零'
			continue
		
		finial_str=finial_str+four_ele_str[i]+integer_unit1[i]
		i+=1	
	return(finial_str)

integer_ch_group=[]	
for x in integer_group:
	a_str=four_read(x)
	integer_ch_group.append(a_str)

print(integer_ch_group)

integer_unit=['元','万','亿','兆','京','垓','杼']	
integer_ch=''
def combin_str(integer_ch_group,fraction_list):
	n=len(integer_ch_group)
	integer_ch=''
	fraction_ch=''
	i=0
	j=n-1
	while i<n:
		integer_ch=integer_ch+integer_ch_group[i]+integer_unit[j]
		i+=1
		j-=1
	table=list('零壹贰叁肆伍陆柒捌玖')
	fraction_ch=table[int(fraction_list[0])]+'角'+table[int(fraction_list[1])]+'分'
	total_ch=integer_ch+fraction_ch
	
	return(total_ch)

total_ch=combin_str(integer_ch_group,fraction_list)

print(total_ch)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值