题解 | #人民币转换#

人民币转换

http://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b

while True:
    try:
        num1,num2=input().split('.')
        num1=int(num1)
        out='人民币'
        num11=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
        num22=['角','分']
        end=['亿','万','元','整']
        end1000=['仟','佰','拾','']
        a=num1%10000  # 低四位 加'元整角分'
        b=(num1//10000)%10000  # 加'万'
        c=(num1//100000000)%10000  # 加'亿'


        # 读十位的函数
        def change10(x):
            changes2=''
            if 19<x<99:  # 几十几
                changes2+=num11[x//10]+end1000[2]  # 读到十位
                if x%10 == 0:
                    return changes2
                else:
                    changes2+=num11[x%10]
            else:  # 十几
                changes2+=end1000[2]
                if x%10 == 0:
                    return changes2
                else:
                    changes2+=num11[x%10]
            return changes2


        # 读百位的函数
        def change100(x):
            changes1=''
            changes1+=num11[x//100]+end1000[1]  # 读到百位
            if x%100 == 0:
                return changes1
            elif 9<x%100<100:
                changes1+=change10(x%100)
            else:
                changes1+=num11[0]+num11[x%100]
            return changes1
        # 读千位的函数
        def change1000(x):
            changes=''
            if x > 999:
                changes+=num11[x//1000]+end1000[0]
                if x%1000 == 0:
                    return changes
                if 9 < x%1000 < 100:  # 除了高位,剩下两位数
                    changes+=num11[0]+change10(x%1000)
                elif 0 < x%1000 < 10:  # 除了高位,剩下一位数
                    changes+=num11[0]+num11[x%1000]
                else:  # 除了高位,剩下三位数
                    changes+=change100(x%1000)
            elif 99<x<1000:
                changes+=change100(x)  # 三位数
            elif 9<x<100:
                changes+=change10(x)  # 两位数
            else:
                changes+=num11[x]
            return changes


        # 主程序
        if num1 == 0:
            for i in range(2):
                if num2[i] != '0':
                    out+=num11[int(num2[i])]+num22[i]
        else:
            if c > 0:  # 亿
                out+=change1000(c)+end[0]
            if b > 0:  # 万
                out+=change1000(b)+end[1]
            if a > 0:  # 元
                out+=change1000(a)+end[2]
                if num2 == '00':
                    out+=end[3]
                else:
                    for i in range(2):
                        if num2[i] != '0':
                            out+=num11[int(num2[i])]+num22[i]

        print(out)
    except:
        break
                
            
    
    
    

    
    
全部评论

相关推荐

12-15 19:41
已编辑
广东工业大学 前端工程师
smile丶snow:尽量保证的一张a4纸吧。为什么工作经历只有公司?如果项目经历是工作里面的,应该写到工作经历里的吧。没有写项目职责,项目全是一个人写的吗?标题大小也好怪。两个项目的分割看不出来是,它和那些项目成功字体是一样大的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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