python人民币小写转大写_Python TIPS上一道关于人民币金额小写转大写的题

这篇博客介绍了一个Python程序,用于将人民币金额的小写形式转换为大写。通过创建数字到大写汉字的映射字典,然后对输入金额进行分组,逐个读取并转换四位一组的数值,最后组合成完整的人民币大写金额。

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

人民币金额打印

题目链接:here。我发现我写的好复杂,但万幸编码还算符合人类,看了其他答案,感觉都是天书。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Date : 2017-06-09

# @Author : Bob Liao (codechaser1@gmail.com)

# @Link : https://github.com/coderchaser

# @Version : python3.4

#创建大小写转换字典

num_dic={

# 1 : "壹",

# 2 : "贰",

# 3 : "叁",

# 4 : "肆",

# 5 : "伍",

# 6 : "陆",

# 7 : "柒",

# 8 : "捌",

# 9 : "玖",

# 0 : "零"

u"1": u"壹",

u"2": u"贰",

u"3": u"叁",

u"4": u"肆",

u"5": u"伍",

u"6": u"陆",

u"7": u"柒",

u"8": u"捌",

u"9": u"玖",

u"0": u"零"

}

#将输入金额分组,从最低位开始四位分组,最后一组可以少于四位

def group(num_str) :

group_list=[]

i=len(num_str)

while i>=4 :

group_list.append(num_str[i-4:i])

i-=4

if i!=0 :

group_list.append(num_str[:i])

#保证顺序输出

group_list.reverse()

return group_list

#原始读函数,数字必须全部转化为字符串

def read_four(num_four) :

#读四位分组

gewei=""

shiwei=""

baiwei=""

qianwei=""

num_len=len(num_four)

#当传入的数字为0000时num_len会变成1,会发生list越界

if num_four[-1]!=u'0' :

if num_four[-2]!=u'0' :

gewei=num_dic[num_four[-1]]

else :

gewei=u"零"+num_dic[num_four[-1]]

if num_four[-2]!=u'0' :

if num_four[-3]!=u'0' :

shiwei=num_dic[num_four[-2]]+u"拾"

else :

shiwei=u"零"+num_dic[num_four[-2]]+u"拾"

if num_four[-3]!=u'0' :

if num_four[-4]!=u'0' :

baiwei=num_dic[num_four[-3]]+u"佰"

else :

baiwei=u"零"+num_dic[num_four[-3]]+u"佰"

if num_four[-4]!=u'0' :

qianwei=num_dic[num_four[-4]]+u"仟"

return qianwei+baiwei+shiwei+gewei

def read_three(num_three) :

#读三位分组

gewei=""

shiwei=""

baiwei=""

if num_three[-1]!=u'0' :

if num_three[-2]!=u'0' :

gewei=num_dic[num_three[-1]]

else :

gewei=u"零"+num_dic[num_three[-1]]

if num_three[-2]!=u'0' :

if num_three[-3]!=u'0' :

shiwei=num_dic[num_three[-2]]+u"拾"

else :

shiwei=u"零"+num_dic[num_three[-2]]+u"拾"

if num_three[-3]!=u'0' :

baiwei=num_dic[num_three[-3]]+u"佰"

return baiwei+shiwei+gewei

def read_two(num_two) :

#读二位分组

gewei=""

shiwei=""

if num_two[-1]!=u'0' :

if num_two[-2]!=u'0' :

gewei=num_dic[num_two[-1]]

else :

gewei=u"零"+num_dic[num_two[-1]]

if num_two[-2]!=u'0' :

if num_two[-2] ==u'1' :

shiwei=u"拾"

else :

shiwei=num_dic[num_two[-2]]+u"拾"

return shiwei+gewei

def read_one(num_one) :

#读一位分组

if num_one!=u'0' :

return num_dic[num_one]

else :

return ""

#建立调用字典关系

call_read={

1 : read_one,

2 : read_two,

3 : read_three,

4 : read_four

}

def read(num) :

#将数字int转化为字符串

#金额不可以像如下形式:

#0100

#Python3会将0开头的数字

#识别为8进制,一般人不会

#这样写金额,不予考虑

if num == 0:

print("零圆")

return

num_str=str(abs(num))

#分组

group_list=group(num_str)

read_part=[]

if num<0 :

read_part.append(u'负')

for i in group_list :

len_part=len(i)

read_part.append(call_read[len_part](i))

if group_list.index(i)== 0 and len(group_list)>1 :

read_part.append(u'万')

read_part.append(u'圆')

print("".join(read_part))

# num=int(input('Your Number: '))

# print(num)

read(90901001)

### 使用阿里云 Docker 部署前后端分离项目 #### 环境准备 为了在阿里云使用 Docker 部署包含前端和后端的项目,首先需要准备好相应的环境。这包括获取一台合适的云服务器并完成必要的软件安装。 对于云服务器的选择,可以考虑使用阿里云轻量级应用服务器作为部署平台[^1]。一旦选择了适合的实例规格,在创建完成后即可以通过 SSH 远程登录到该服务器进行后续操作。 #### 安装 Docker 及其依赖项 确保操作系统是最新的状态之后,通过以下命令来配置 Docker 的 YUM 源至阿里云镜像仓库,并安装最新版本的 Docker: ```bash sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io -y ``` 上述命令会将官方源替换为更快速稳定的国内镜像站点,从而加速下载过程;接着执行 `yum` 命令完成实际的安装工作[^3]。 #### 启动与管理 Docker 服务 安装完毕后应当立即启用 Docker 自启功能以便于未来维护更加便捷高效: ```bash sudo systemctl start docker sudo systemctl enable docker ``` 这样即使重启机器也不必担心容器化应用程序无法正常运行了。 #### 构建或拉取所需镜像 针对具体的业务需求分别构建或者从公共注册表中拉取对应的前端、后端以及数据库组件所需的 Docker 镜像文件。例如 Spring Boot 应用程序通常会被打包成 JAR 文件并通过官方 Java Base Image 来启动;而 MySQL 数据库则可以直接利用官方提供的稳定版镜像来进行初始化设置。 #### 编写 Compose 文件实现多容器编排 考虑到前后端分离架构的特点,推荐采用 Docker Compose 工具简化多个关联服务之间的协调运作关系。编写一份描述清晰合理的 YAML 格式的 compose 文件能够帮助自动化整个项目的搭建流程,减少人为干预带来的不确定性因素影响最终效果[^2]。 #### 测试验证部署成果 最后一步就是仔细检查各个部分是否按照预期那样协同合作良好地运转起来了——访问指定域名下的网页界面查看是否存在加载异常情况;尝试提交一些简单的交互请求确认后台逻辑处理无误等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值