数字转人民币读法-python3

 """                                                                
  2 把一个浮点数分解成证书备份和小数部分
  3 """       
  4 def divide(num):
  5     intnum = int(num)
  6     floatnum = int(num) - intnum
  7     return (str(intnum),str(floatnum))
  8           
  9 han_list = ["","","","","","","","","",""]
 10 unit_list = ["","",""]
 11           
 12 def convert(num):
 13     result = ""
 14     num_len = len(num)
 15     for i in range(num_len):
 16         number = int(num[i])
 17         if num_len == 4 and number != 0 and i <= 2:
 18             result += han_list[number] + unit_list[i]
 19         elif num_len == 3 and number != 0 and i <2:
 20             result += han_list[number] + unit_list[i + 1]
 21         elif num_len == 2 and number != 0 and i <1:
 22             result += han_list[number] + unit_list[i + 2]
 23         else:
 24             result += han_list[number]
 25     return result
 26 def convert2(num):
 27     lennum = len(num)
 28     if lennum > 12:
 29         print("数字太大无法转换!")
 30         return
 31     elif lennum > 8:
 32         return convert(num[:-8]) + "亿"+\
 33                 convert(num[-8:-4]) + ""+\
 34                 convert(num[-4:])
 35     elif lennum > 4:
 36         return convert(num[:-4]) + ""+\
 37                 convert(num[-4:])
 38     else: 
 else:   
 39         return convert(num)
 40 number = input()
 41 intnum,floatnum = divide(number)
 42 result = convert2(intnum)+ ""
 43             
 44 print(result)         

运行结果

123456789
壹亿贰千叁佰肆拾伍万陆千柒佰捌拾玖元
一开始想用if嵌套来实现这个功能,后俩发现程序量过于大,所以就换了一种思如,附上代码,这个代码只实现了8为以上数字的转换

 

 """
  2 问题描述
  3 将一个数字转换成人命币的读法,并且数字要求转换为对应的大写数字
  4 思路分析
  5 1.详见其整数和小数分离出来
  6 2.中国习惯将数字每四位划分为一个区间
  7 3.
  8 """
  9 list1 = []
 10 def sever_number(number):
 11     int_number = int(number)
 12     float_number =int(number) - int_number
 13     #将其转化为字符串,以进行切片                                  
 14     return (str(int_number),str(float_number))
 15 list_han = ["","","","","","","","","",""]
 16 list_unit = ["","",""]
 17  
 18 def hanstr(number):
 19     global list1
 20     if len(number) > 8:
 21         sever1 = number[:-8]
 22         for i in sever1:
 23             num = int(i)
 24             a = list_han[num]
 25             list1.append(a)
 26             if sever1.index(i) == (len(sever1) - 1):
 27                 list1.append(list_unit[0])
 28                 sever2 = number[-8:-4]
 29                 for i in sever2:
 30                     num = int(i)
 31                     a = list_han[num]
 32                     list1.append(a)
 33                     if sever2.index(i) == (len(sever2) - 1):
 34                         sever3 = number[-4:]
 35                         for i in sever3:
 36                             num = int(i)
 37                             a = list_han[num]
 38                             list1.append(a)
 39                         return
 40 num = input()
 41 int_number,float_number = sever_number(num)
 42 hanstr(int_number)
 43 for i in list1:
 44     print(i,end = "")
 45 print("\n")
 46  
 47  
~                                   

 

posted @ 2020-10-26 20:24  zou-ting-rong  阅读(636)  评论(0编辑  收藏  举报