python代码——⼈民币转换
(题⽬来源⽜客⽹,侵删)
题⽬描述
考试题⽬和要点:
1、中⽂⼤写⾦额数字前应标明“⼈民币”字样。中⽂⼤写⾦额数字应⽤壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、⾓、分、零、整等字样填写。(30分)
2、中⽂⼤写⾦额数字到“元”为⽌的,在“元”之后,应写“整字,如¥ 532.00应写成“⼈民币伍佰叁拾贰元整”。
在”⾓“和”分“后⾯不写”整字。(30分)
3、阿拉伯数字中间有“0”时,中⽂⼤写要写“零”字,阿拉伯数字中间连续有⼏个“0”时,中⽂⼤写⾦额中间只写⼀个“零”字,如¥6007.14,应写成“⼈民币陆仟零柒元壹⾓肆分“。
输⼊描述:
输⼊⼀个double数
输出描述:
输出⼈民币格式
⽰例1
输⼊
151121.15
输出
⼈民币拾伍万壹仟壹佰贰拾壹元壹⾓伍分
代码实现
list_a=["", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾","佰", "仟", "万", "拾", "佰", "仟","万"]
list_b=["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]
import sys
for line in sys.stdin:#做循环输⼊
a=line.split("\n")python货币转换
for i in a:
if i=='':
for k in a:
new_list=k.split('.')#分别取⼀个数的整数部分和⼩数部分
#        print(new_list)
First_num=list(new_list[0])#整数
Last_num=list(new_list[1])#⼩数
len_first=len(First_num)#求整数部分长度
len_last=len(Last_num)#求⼩数部分长度
flag1=0#⽤于判断整数部分是否为0
for i in First_num:
if int(i)!=0:
flag1=1
#输出整数部分
i=0
k=len_first
print("⼈民币",end='')
while i<len_first:
a=int(First_num[i])
if i+1<len_first:
if a==0 and int(First_num[i+1])==0 :#17001.00应输出壹万柒仟零拾壹元整,避免输出多个零(壹万柒仟零佰零拾壹元整——错误)
k = k - 1
i = i + 1
elif a==0 and int(First_num[i+1])!=0 :#同上,判断是否有多个零
print(list_b[a],end='')
k = k - 1
i = i + 1
elif k-1==1 and a==1:#13.00应输出为拾叁元,避免输出壹拾叁
print(list_a[k-1],end='')
k = k - 1
i = i + 1
else:
print(list_b[a],end='')
print(list_a[k-1],end='')
k=k-1
i=i+1
elif i+1==len_first:
if a!=0:
print(list_b[a], end='')
print(list_a[k - 1], end='')
k = k - 1
i = i + 1
if flag1==1:#判断是否该输出元字(0.01该输出⼈民币壹分,不输出元字)
print('元', end='')
break
else:
if flag1 == 1:
print('元', end='')
break
#输出⼩数部分
flag=0
for i in Last_num:
if i!='\n':
if int(i)!=0:
flag=1
if flag==0:
print('整')
else:
if int(Last_num[0])!=0:
print(list_b[int(Last_num[0])]+"⾓",end='')
if int(Last_num[1])!=0:
print(list_b[int(Last_num[1])]+"分")
else:
print("")
注:输⼊数据必须为double数,即既有⼩数⼜有整数,⼩数位数不超过2(即不超过分),没有写输⼊数据为整数的情况,否则会报错运⾏结果

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。