任务描述
不管是阿拉伯数字(1、2、3……), 还是所谓汉字小写数码(一、二、三……), 由于笔画简单,容易被涂改伪篡。所以一般文书和商业财务票据上的数字都要采用汉字数码大写: 壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、(“万、亿”本身笔画已经比较复杂,使用机会也少,没有必要再用别的字代替)。如“ 3564 元”写作“叁仟伍佰陆拾肆元” 。
任务要求
编写程序,将输入的阿拉伯数字金额转换为汉字数码大写的小程序。假设给定的数字不超过1亿。
提示:除了最后一个数字字符,每个数字字符对应一个数值的汉字和一个权值的汉字,数值的汉字由其大小决定,权值的汉字由其位置决定。 例如12345,1对应数值壹和权值万,2对应数值贰和权值仟,3对应数字叁和权值佰,4对应数值肆和权值拾。
提示:设置两个字符串 hz='零壹贰叁肆伍陆柒捌玖' dw='拾佰仟万拾佰仟'。 对输入字符串(除最后一位)循环,将每位数字对应的数值汉字和权值汉字连接起来。最后再连接最后一位的数字汉字和元即可。
注意:数值为0的情况。
对于if语句,同时需要符合的两个条件,使用and连接。 例如要求x大于10并且y大于5,输出yes If x>10 and y>5: print(“yes”) 对于只要符合一个的情况,使用or连接。 例如只要x大于10或y大于5,输出yes If x>10 or y>5: print(“yes”)
测试说明
平台会对你编写的代码进行测试:
测试输入:12345 预期输出: 壹万贰仟叁佰肆拾伍元 测试输入:100 预期输出:壹佰元 测试输入:23451000 预期输出:贰仟叁佰肆拾伍万壹仟元 测试输入:1009020 预期输出: 壹佰万玖仟零贰拾元 测试输入: 45689021 预期输出:肆仟伍佰陆拾捌万玖仟零贰拾壹元
提示: 注意对于连续的0值的处理
x=input("")
hz='零壹贰叁肆伍陆柒捌玖'
dw='拾佰仟万拾佰仟'
y=""
#代码开始
i=len(x)
for c in x[:-1]:
if(c!="0" or (c=="0" and x[-i+1]!="0" and i!=5 and i!=9)):
y=y+hz[int(c)]
if c!='0' or(c=='0' and((i==5 and y[-1]!="亿"and y[-1]!="兆")or(i==9 and y[-1]!="兆"))):
y=y+dw[i-2]
i=i-1
if x[-1]!='0':
y=y+hz[int(x[-1])]
y=y+"元"
#代码结束
print(y)