疯狂Python讲义——数字转人民币读法完整版

该博客使用Python编写程序,实现将输入的浮点数分解为整数和分数部分,再将整数和分数部分分别转化为汉字大写,最后组合成完整的大写金额输出。程序包含数字分解、整数和分数转汉字等多个函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def divide(num): #数字分解成证书和分数
integer = int(num)
fraction = round((num - integer) * 100)
return (str(integer),str(fraction))

han_list = [“零”, ‘壹’, ‘贰’, ‘叁’, ‘肆’, ‘伍’, ‘陆’, ‘柒’, ‘捌’, ‘玖’]
unit_list = [‘十’, ‘百’, ‘千’]

def four_to_hanstr(num_str): #将整数部分转化成汉字大写,并按数字读法处理数字
result = “”
num_len = len(num_str)
for i in range(num_len): #将“数字”转化为汉字并加上单位
num = int(num_str[i])
if i != num_len -1 and num != 0:
result += han_list[num] + unit_list[num_len-2-i]
else:
result += han_list[num]
trans = list(result)
trans_len = len(trans)
while trans_len >= 4: #按数字读法处理数字
if trans[0]==trans[1]==trans[2]trans[3]“零”:
del trans[:]
break
elif trans[0]==trans[1]trans[2]“零”:
del trans[0:2]
break
elif trans[2]trans[3]“零”:
del trans[2]
break
else:
break
result = “”.join(trans)
return result

def fra_to_hanstr(fra_str): #将分数部分转化成汉字大写
result1 = “”
fra_len = len(fra_str)
for i in range(fra_len):
num = int(fra_str[i])
if i != fra_len -1 and num != 0:
result1 += han_list[num]
else:
result1 += han_list[num]
return result1

def integer_to_str(num_str): #将num_str转化为汉字字符串
str_len = len(num_str)
if str_len > 12 :
print(‘The number is too big!’)
return
elif str_len > 8 and num_str[-8:-4]==“0000”:
return four_to_hanstr(num_str[:-8]) + “亿” + four_to_hanstr(num_str[-4:])
elif str_len > 8 and num_str[-8:-4]!=“0000”:
return four_to_hanstr(num_str[:-8]) + “亿” + four_to_hanstr(num_str[-8:-4]) + “万” + four_to_hanstr(num_str[-4:])
elif str_len > 4:
return four_to_hanstr(num_str[:-4]) + “万” + four_to_hanstr(num_str[-4:])
else:
return four_to_hanstr(num_str)
num = float(input(“Please enter one float number:”))
integer, fraction = divide(num)
print(fraction)
if fraction == “0”:
print(integer_to_str(integer) + “元”)
else:
result_end = integer_to_str(integer) + “点” + fra_to_hanstr(fraction) + “元”
print(result_end)

#程序写的比较粗糙,不够精炼。欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值