题目
代码
def get_num(num):
numbers = {
1: 'yi', 2: 'er', 3: 'san', 4: 'si', 5: 'wu',
6: 'liu', 7: 'qi', 8: 'ba', 9: 'jiu', 0: 'ling'
}
return numbers.get(num)
def get_danwei(danwei):
danweis = {
1: 'tmp', 2: 'shi', 3: 'bai', 4: 'qian',
5: 'wan', 6: 'shi', 7: 'bai', 8: 'qian',
9: 'yi', 10: 'shi'
}
return danweis.get(danwei)
n = list((' '.join(input())).split())
#n.reverse()
out = []
danwei = 1
zero = 0
for i in n[::-1]:
num = get_num(int(i))
danwei_out = get_danwei(danwei)
if i == '0':
if zero != 0:
zero = 0
if not danwei == 1 or danwei == 5 or danwei == 9: # 1、5、9时候不输出0
out.insert(0, num) # 其余情况输出0
# 因为是倒着来的,所以插入要插到第一个
danwei += 1
else:
out.insert(0, danwei_out)
out.insert(0, num)
danwei += 1
else:
if danwei == 1 or danwei == 5 or danwei == 9:
out.insert(0, danwei_out)
danwei += 1
else:
danwei += 1
continue
else:
if danwei == 6:
if i == '1':
out.insert(0, danwei_out)
zero = 1
danwei += 1
else:
out.insert(0, danwei_out)
out.insert(0, num)
zero = 1
danwei += 1
else:
out.insert(0, danwei_out)
out.insert(0, num)
zero = 1
danwei += 1
tmp = [i for i,j in enumerate(out) if j == 'tmp']
while len(tmp) != 0:
out.pop(tmp[0])
tmp = [i for i,j in enumerate(out) if j == 'tmp']
print(' '.join(out))
评测
对于这题我好像是有啥心得体会的,但是时间过去的太久,已经忘记了。。。