题解 | #人民币转换#

人民币转换

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

这题单纯的条件比较多

num = input()
intpart, floatpart = num.split('.')  # 小数点前后分开处理
length = len(intpart)  # 整数部分长度

resStr = "人民币"
if num == 0:
    print("人民币零元整")
rmbDict = {1:'壹', 2:'贰', 3:'叁', 4:'肆', 5:'伍',
          6:'陆', 7:'柒', 8:'捌', 9:'玖'}
powDict = {1:'拾', 2:'佰',3:'仟'}
count = length  # 小数点前的位置

# *********** 先写小数点前 ***********
preZeroFlag = False  # 初始化0标记
while count > 0:
    currNumStr = num[length - count]  # 当前数字,字符形式
    currNum = int(currNumStr)
    if length == 1 and currNum == 0: # 若整数部分为0则只写小数部分
        break
    
    # 根据规则写字符串
    if currNum == 0:
        preZeroFlag = True
    elif currNum != 0:
        # 若前面有0则加入汉字零
        if preZeroFlag == True:
            if count == 4:  # 规则5:千前面有0不加零
                continue
            else:
                resStr += '零'
            preZeroFlag = False
        # 万位、亿位、个位元单独处理
        if count == 5:
            resStr += (rmbDict[currNum] + '万')  # 万
        elif count == 9:
            resStr += (rmbDict[currNum] + '亿')  # 亿
        elif count == 1:
            resStr += (rmbDict[currNum])  # 个位元
        else:
            # 取余
            if count > 8:
                    countMod = (count - 1) % 8
            else:
                countMod = (count - 1) % 4
            if currNum == 1 and countMod == 1:  # 规则4:10写作拾
                resStr += '拾'
            else:
                resStr += (rmbDict[currNum] + powDict[countMod])
    count -= 1
    if count == 0:  # 整数部分写完加汉字'元'
        resStr += '元'
        
# *********** 再写小数点后 ***********
if floatpart[0] == '0' and floatpart[1] == '0':
    resStr += '整'
elif floatpart[0] == '0' and floatpart[1] != '0':
    resStr += rmbDict[int(floatpart[1])] + '分'
elif floatpart[0] != '0' and floatpart[1] == '0':
    resStr += rmbDict[int(floatpart[0])] + '角'
else:
    resStr += rmbDict[int(floatpart[0])] + '角' + rmbDict[int(floatpart[1])] + '分'

print(resStr)

全部评论

相关推荐

合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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