""" 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(" ") 46 47 ~