大家好,我是皮皮。
一、前言
前几天在Python黄金群【莫生气】问了一个Python
数据处理的问题,需求如下:
大佬们,请教一个问题,2274587.84如何快速的转换为大写:贰佰贰拾柒万肆仟伍佰捌拾柒元捌角肆分?有没有工具或者网页啥的?不一定要Python实现。
前面两篇文章已经给大家很多方法了,今天在Python青铜群里,有个【听风无涯】分享了两个Python代码,亲测好使,这里分享给大家。
二、实现过程
固定的代码如下所示:
代码语言:javascript复制def number_to_chinese(num):
chinese_units = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万']
chinese_nums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
num_str = str(round(num, 2)) # 将数字转换为字符串,并保留两位小数
integer_part, decimal_part = num_str.split('.') # 拆分整数和小数部分
result = '元'
# 处理整数部分
for i, digit in enumerate(integer_part[::-1]):
result = chinese_units[i] result
result = chinese_nums[int(digit)] result
# 处理小数部分
if decimal_part == '00':
result = '整'
else:
if decimal_part[0] != '0':
result = chinese_nums[int(decimal_part[0])] '角'
if decimal_part[1] != '0':
result = chinese_nums[int(decimal_part[1])] '分'
return result
# amount = 2274587.84
amount = 22745.00
chinese_amount = number_to_chinese(amount)
print(chinese_amount)
这里的数值需要自己提前写死,缺少了互动,不慌,这里他给了一份可以自定义输入数字的代码,如下所示:
代码语言:javascript复制def number_to_chinese(num):
chinese_units = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万']
chinese_nums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
num_str = str(round(num, 2)) # 将数字转换为字符串,并保留两位小数
integer_part, decimal_part = num_str.split('.') # 拆分整数和小数部分
result = '元'
# 处理整数部分
for i, digit in enumerate(integer_part[::-1]):
result = chinese_units[i] result
result = chinese_nums[int(digit)] result
# 处理小数部分
if decimal_part == '00':
result = '整'
else:
if decimal_part[0] != '0':
result = chinese_nums[int(decimal_part[0])] '角'
if decimal_part[1] != '0':
result = chinese_nums[int(decimal_part[1])] '分'
return result
amount = float(input("请输入待转换的数值:"))
chinese_amount = number_to_chinese(amount)
print(chinese_amount)
两个代码都可以得到预期的效果,如下所示:
顺利地解决了粉丝的问题。不过后来我在测试的时候发现了一个小问题,前期代码整体上问题不大,但是针对有小数的数字进行处理的,必须要加小数,如果是整数,或者.00这样的,就会报错,需要稍微针对性的处理下,这里分享一个大小写转换(针对无小数点或者小数点后为0的情况)版本,代码如下所示:
代码语言:javascript复制def number_to_chinese(num):
chinese_units = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万']
chinese_nums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
num_str = str(round(num, 2)) # 将数字转换为字符串,并保留两位小数
integer_part, decimal_part = num_str.split('.') # 拆分整数和小数部分
result = '元'
# 处理整数部分
for i, digit in enumerate(integer_part[::-1]):
result = chinese_units[i] result
result = chinese_nums[int(digit)] result
return result
# amount = 2274587.84
amount = 22745.00
chinese_amount = number_to_chinese(amount)
print(chinese_amount)
其实就是在之前处理小数点的基础上删减了小数处理的部分,这样遇到有小数点和无小数点的情况都可以进行处理了。
三、总结
大家好,我是皮皮。这篇文章主要盘点了一个Python
实战的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【莫生气】提问,感谢【听风无涯】给出的思路和代码解析,感谢【冯诚】、【平安是福】等人参与学习交流。