知识点:1.区分转化的数字和位数对应的汉字,建立数字对应列表和数位对应列表;
2.将数字分为整数部和小数部,整数部(逆序)按照列表对应数字和数位输出,小数部区分角和分;
3.新建空字符串存储转化后的字符res='';
3.整数部处理情况:
1)将字符串中整数部分逆序输出str1[0][::-1],由低数位向高数位依次遍历;
2)整数部出现0时,对应数字列表第一个‘零’;
3)整数部不为0时,按照数字+数位+已存在字符串存储,list1[int(zheng[i])] + list2[i] +res;
4)将'壹拾'替换为'拾',res = res.replace('壹拾','拾');
5)调用re库,使用正则匹配将字符串中两个以上零替换为一个,tmp = re.findall(r'[\'零\']{2,20}',res);
import re
str1 = input().split('.')
list1 = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖','拾','佰','仟','万','亿']
list2 = ['','拾','佰','仟','万','拾','佰','仟','亿']
zheng = str1[0][::-1]
xiao = str1[1]
res = ''
if int(zheng)>0:
for i in range(len(zheng)):
if zheng[i] == '0':
res = list1[int(zheng[i])] + res
else:
res = list1[int(zheng[i])] + list2[i] +res
res = res.replace('壹拾','拾')
tmp = re.findall(r'[\'零\']{2,20}',res)
for t in tmp:
res.replace(t,'零')
if res[-1] == '零':
res = res[:-1]
res += '元'
if int(xiao)==0:
res+='整'
elif int(xiao)>=10:
if int(xiao[1])!=0:
res+= list1[int(xiao[0])] + '角' + list1[int(xiao[1])] + '分'
else:
res+= list1[int(xiao[0])] + '角'
else:
res+= list1[int(xiao[1])] + '分'
res = '人民币' + res
print(res)

京公网安备 11010502036488号