用拼音打印数字
实现千以内(可扩展)的正负数,小数的拼音读法打印
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()