题解 | 人民币转换

用循环和栈来解决包括亿亿级以上的数字,不需要一直手动添加分类情况

一直除以一亿,直到商为0,把期间的模运算结果全部存到一个栈里,然后从栈顶开始处理每个模运算结果

#50156000002000123400120000.00

#st = [120000, 20001234, 15600000, 50]

import sys
s = input()
num,numdot = s.split('.')
num = int(num)
result = ['人民币']
dic = {'1':'壹','2':'贰','3':'叁','4':'肆','5':'伍','6':'陆','7':'柒','8':'捌',
'9':'玖','0':'零'}
def adjust(sub):
    res = []
    if sub >= 1000:
        res.append(dic[str(sub)[0]])
        res.append('仟')
        sub = sub % 1000
        if 0 < sub < 100:
            res.append('零')
    if sub >= 100:
        res.append(dic[str(sub)[0]])
        res.append('佰')
        sub = sub % 100
        if 0 < sub < 10:
            res.append('零')
    if sub >= 10:
        if str(sub)[0] == '1':
            res.append('拾')
        else:
            res.append(dic[str(sub)[0]])
            res.append('拾')
        sub = sub % 10
    if sub > 0:
        res.append(dic[str(sub)[0]])
    return ''.join(res)

flag = True
n1 = num
st = []
while flag:
    n1,n2 = divmod(n1,100000000)
    st.append(n2)
    if not n1:
        flag = False
#50156000002000123400120000.00
#st = [120000, 20001234, 15600000, 50]
while st:
    n1 = st.pop()
    if n1 >= 10000:
        #万~千万
        n2,n1 = divmod(n1,10000)
        #n2是千、百、十万、万,n1是千、百、十、个
        tmp = adjust(n2)
        result.append(tmp)
        result.append('万')
    if n1 != 0:
        tmp = adjust(n1)
        result.append(tmp)
    if st:
        #st还有数,说明不是亿以内
        result.append('亿')

if num != 0:
    result.append('元')

if numdot == '00':
    result.append('整')
else:
    if numdot[0] != '0':
        result.append(dic[numdot[0]])
        result.append('角')
    if numdot[1] != '0':
        result.append(dic[numdot[1]])
        result.append('分')
print(''.join(result))








全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 12:20
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求...:注意把武大标粗标大 本地你俩不是乱杀
实习进度记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务