大家好,我是皮皮。
一、前言
前几天在Python黄金群【莫生气】问了一个Python
数据处理的问题,需求如下:
大佬们,请教一个问题,2274587.84如何快速的转换为大写:贰佰贰拾柒万肆仟伍佰捌拾柒元捌角肆分?有没有工具或者网页啥的?不一定要Python实现。
前面两篇文章已经给大家很多方法了,今天在Python青铜群里,有个【听风无涯】分享了两个Python代码,亲测好使,这里分享给大家。
二、实现过程
固定的代码如下所示:
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)
这里的数值需要自己提前写死,缺少了互动,不慌,这里他给了一份可以自定义输入数字的代码,如下所示:
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的情况)版本,代码如下所示:
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
实战的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【莫生气】提问,感谢【听风无涯】给出的思路和代码解析,感谢【冯诚】、【平安是福】等人参与学习交流。
【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。
共同学习,写下你的评论
评论加载中...
作者其他优质文章