题解 | #人民币转换#
人民币转换
https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b
''' 1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。 2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。 3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如6007.14,应写成“人民币陆仟零柒元壹角肆分“。 4、10应写作“拾”,100应写作“壹佰”。例如,1010.00应写作“人民币壹仟零拾元整”,110.00应写作“人民币壹佰拾元整” 5、十万以上的数字接千不用加“零”,例如,30105000.00应写作“人民币叁仟零拾万伍仟元整” ''' w1 = '零壹贰叁肆伍陆柒捌玖' def after_dot(s): '''求小数点后读法''' r = '' if s == '00': r += '整' if int(s[0]) > 0: r += w1[int(s[0])] + '角' if int(s[1]) > 0: r += w1[int(s[1])] + '分' print(r) def before_dot(s): d = int(s) if d == 0: return if d != 0: print(tran_int(d) + '元', end='') def tran_int(d): '''整数翻译: 0直接翻译为空''' if d == 0: # 0 r = '' elif d < 10: # 1-9 r = w1[d] elif d < 20: # 10-19 r = '拾' + tran_int(d % 10) elif d < 100: # 20-99 r = tran_int(d // 10) + '拾' + tran_int(d % 10) elif d < 1000: # 100-999 if d % 100 >= 20: # 十位2以上 r = tran_int(d // 100) + '佰' + tran_int(d % 100) elif d % 100 >= 10: # 十位1 r = tran_int(d // 100) + '佰一' + tran_int(d % 100) elif d % 10 > 0: # 十位0个位非0 r = tran_int(d // 100) + '佰零' + tran_int(d % 10) else: # 整百 r = tran_int(d // 100) + '佰' elif d < 10000: # 1000 - 9999 if d % 1000 >= 100: # 1100~9999 r = tran_int(d // 1000) + '千' + tran_int(d % 1000) elif d % 10 // 100 == 0: # 百位为0 if d % 100 != 0: # 十个位不全为0 r = tran_int(d // 1000) + '千零' + tran_int(d % 100) else: r = tran_int(d // 1000) + '千' elif d < pow(10, 8): # 1万到1亿 if d % 10000 // 1000 == 0 and d % 1000 != 0: # 千位0,但个十百不全是0 r = tran_int(d // 10000) + '万零' + tran_int(d % 1000) else: r = tran_int(d // 10000) + '万' + tran_int(d % 10000) elif d < pow(10, 12): # 1亿到万亿 if d % pow(10, 8) // pow(10, 7) == 0 and d % pow(10, 8) != 0: # 千万位为0,千万以下不权威 r = tran_int(d // pow(10, 8)) + '亿零' + tran_int(d % pow(10, 8)) else: r = tran_int(d // pow(10, 8)) + '亿' + tran_int(d % pow(10, 8)) return r def tran_rmb(m1, m2): print('人民币',end='') before_dot(m1) after_dot(m2) if __name__ == '__main__': m1, m2 = input().split('.') tran_rmb(m1, m2)