萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创。
IDE:pycharm
python版本:python3.7
'''
实验目的:在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的功能。在这次实验,你将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字。
程序运行过程:
1. 提示用户输入金额的范围并接收用户输入的金额
2. 将用户输入的金额转换为中文大写并输出
3. 询问用户是否退出程序
实验思路:
1. 通过定义一个字典进行阿拉伯数字与大写中文的对比储存
2. 将用户的输入首先分割为整数与小数部分分别进行处理
3. 整数部分可以分割为以 4 位数字为一组的列表来进行转换处理,这样便于进行
(兆,亿,万,圆)。的单位处理
'''
dic_num=[{'1':'壹','2':'贰','3':'叁','4':'肆','5':'伍','6':'陆','7':'柒','8':'捌','9':'玖','0':'零'},'拾', '佰', '仟', '万']
figure=['圆','万','亿','兆']
#小数部分字符串
def data_num_split(input_num):
'''
整个金额分割函数
:return: 小数部分和整数部分
'''
j=0
if '.'not in input_num:
integer=input_num
decimals=''
else:
for i in input_num.split("."):
if j==0:
# print(i)
integer=i
j+=1
else:
# print(i)
decimals=i
return integer[::-1],decimals
def groupful_num():
num_group1 = []
num_group2 = []
count = 0
while True:
for i in integer:
count += 1
num_group1.append(i)
if count % 4 == 0:
# print(num_group1)
num_group2.append(num_group1)
# money_cn = func(num_group2) + '圆' + money_cn
num_group1 = []
else:
if num_group1 not in num_group2 and len(num_group1)!=0:
num_group2.append(num_group1)
# money_cn = func(num_group2) + '圆' + money_cn
break
else:
break
return num_group2
def integer_part(integer):
'''
整数部分
:return:
'''
# integer=integer[::-1]
if integer == '0':
return '零圆'
answer=''
count=0
for num_group in groupful_num():
answer=read_num(num_group)+figure[count]+answer
count+=1
# print(answer)
return answer
def read_num(b):
ns = ''
for x in range(1, len(b)):
num = dic_num[0][b[x]] # 转换大小写
word = num + (dic_num[x] if b[x] != '0' else '')
# 如果字符是0,添加一个''
ns = word + ns # 叠加
return ns + (dic_num[0][b[0]] if b[0] != '0' else '')
def decimals_part(decimals):
'''
小数部分
:return:
'''
new_deciamls = ''
for i in range(len(decimals)):
if i == 0:
new_deciamls += dic_num[0][decimals[i]]
new_deciamls += '角'
else:
new_deciamls += dic_num[0][decimals[i]]
new_deciamls += '分'
else:
new_deciamls += '整'
return new_deciamls
#主函数
i =1
while i==1:
input_num=input("请输入不超过一万兆的金额,小数部分不超过两位:")
integer = data_num_split(input_num)[0] # 整数部分字符串分割
decimals = data_num_split(input_num)[1]
while len (decimals)>=3:
break
else:
print(integer_part(integer), decimals_part(decimals))
if input("是否继续转换?")=='否':
i=0
print("谢谢使用!")
break