用拼音打印数字

用拼音打印数字

实现千以内(可扩展)的正负数,小数的拼音读法打印

dic = {
    '-': 'fu',
    '.': 'dian',
    '1': 'yi',
    '2': 'er',
    '3': 'san',
    '4:': 'si',
    '5': 'wu',
    '6': 'liu',
    '7': 'qi',
    '8': 'ba',
    '9': 'jiu',
    'name': {'4':'qian', '3':'bai', '2':'shi','1':''}

}


class Number():
    def __init__(self, num):
        self.num = num
        self.lst_nums = []
        self.xiaoshu = False

    def manage(self):

        if self.num < 0:
            new_nums = self.num - (self.num * 2)  # 将负数转化为正数
            print(dic['-'], end=',')
        else:
            new_nums = self.num  # 如果不是负数,则不变

        for new_num in str(new_nums):
            if new_num == '.':  # 如果是小数则将小数部分与整数部分分割
                self.xiaoshu = True  # 如果是小数则标记此数为小数
                break


        if self.xiaoshu:
            self.lst_nums = str(new_nums).split('.')
        else:
            self.lst_nums.append(str(new_nums))

        return self.lst_nums, self.xiaoshu
    def display_float(self):
        print(dic['.'],end=',')#输出小数点
        for lst_num in self.lst_nums[1]:
            print(dic[str(lst_num)],end=',')#输出小数部分
    def display_int(self):
        x=len(self.lst_nums[0])
        for lst_num in self.lst_nums[0]:#循环整数部分并进行打印
            print(dic.setdefault(str(lst_num)),end=',')
            '''设定一个循环标记x,循环一次减1,确保在打印字典时不会因重新遍历时都从最大值开始'''
            for i in range(x,1,-1):#倒序循环,从大到小
                print(dic['name'][str(i)],end=',')
                x-=1
                break
    def display_judgement(self):
        self.manage()
        if self.xiaoshu:
            self.display_int()
            self.display_float()
        else:
            self.display_int()




x = Number(-123.1111111)
x.display_judgement()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值