任务描述
不管是阿拉伯数字(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
预期输出:肆仟伍佰陆拾捌万玖仟零贰拾壹元
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 ): y=y+hz[int(c)] if c!='0' or (c=='0' and i==5): y=y+dw[i-2] i=i-1 if x[-1]!='0': y=y+hz[int(x[-1])] y=y+"元" #代码结束 print(y)