题目描述:
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。
输入格式:
输入在一行中给出一个不超过9位的非负整数。
输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。
代码实现:
n = int(input())
if n == 0: #输入为0
print('a')
else:
ch = ['','S','B','Q','W','S','B','Q','Y'] #从左到右为低位到高位
d = [0 for i in range(9)]
l = 0 #输入的币值位数
while n: #反向存入币值,如输入813227345,则d=[5,4,3,7,2,2,3,1,8]
d[l] = n % 10
n = n//10
l += 1
for i in range(l-1,-1,-1): #反向存入币值需要从右往左扫描
if d[i]:
print(chr(d[i]+97) + ch[i],end='') #数字从a-j编号,加上97再字符化
elif i == 4: #需要输出‘万’的情况
if d[5] or d[6] or d[7]:
print("W",end='')
elif i-1 >= 0 and d[i-1]: #需要输出‘零’的情况
print("a",end='')
注:代码思路来源文章: