题解 | #人民币转换#
人民币转换
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)