编写程序,用户输入阿拉伯数字的日期,转换为汉字的日期。
例如,输入2021/2/25,输出二零二一年二月二十五日
逻辑:
1.定义一个字典对应数字和汉字做数字和汉字的转换
2.将两个/分别转成年和月,在最后加上日
参考代码:
date_map = {'0': '零', '1': '一', '2': '二', '3': '三', '4': '四', '5': '五', '6': '六', '7': '七', '8': '八','9': '九'}
def dateTrans(date):
date_cn = list(date)
# 处理数字日期
for i in range(len(date)):
if date[i] in date_map:
date_cn[i] = date_map[date[i]]
# 处理年月日
year = date.find('/')
month = date.rfind('/')
date_cn[year] = '年'
date_cn[month] = '月'
date_cn.append('日')
# 处理日,兼容月份只有一位数情况
if (month == 7 and len(date) == 10) or (month == 6 and len(date) == 9):
if date_cn[month+1] == '零':
date_cn.pop(month+1)
elif date_cn[month+1] == '一':
date_cn[month+1] = '十'
else:
date_cn.insert(month+2, '十')
# 处理月
if month == 7:
if date_cn[5] == '零':
date_cn.pop(5)
elif date_cn[5] == '一':
date_cn[5] = '十'
return ''.join(date_cn)
if __name__ == '__main__':
date = '2021/12/02'
date_cn = dateTrans(date)
print(date_cn)
如果不强制用find函数的话可以使用split做字符串的切割,会更简单点:
1.以/切割字符串成年月日
2.分别对年月日做转换然后拼接字符串
参考代码
date_map = {'0': '零', '1': '一', '2': '二', '3': '三', '4': '四', '5': '五', '6': '六', '7': '七', '8': '八','9': '九'}
def numToCn(num):
cn = list(num)
if len(num) == 4: # 年
for i in range(len(cn)):
if cn[i] in date_map:
cn[i] = date_map[num[i]]
else: # 月、日
if len(cn) == 1:
cn = [date_map[cn[0]]]
else:
if cn[0] == '0': # 以零开头,只需要第二位
cn = [date_map[cn[1]]]
elif cn[0] == '1':
cn[0] = '十'
cn[1] = date_map[cn[1]]
else:
cn[0] = date_map[cn[0]]
cn.append(date_map[cn[1]])
cn[1] = '十'
return ''.join(cn)
year, month, day = date.split('/')
date_cn = numToCn(year)+"年"+numToCn(month)+"月"+numToCn(day)+"日"
print(date_cn)
确实简单好多 😁