A25773. 提示信息:假设给出一个数值9876543201,直接看这个数字很难直观准确的读出来,为了准确快速的读出一个数字,想请你编写一个读数系统。中文读数规则:1.从高位读起,先读亿级,再读万级,最后读个级;2. 读亿级和万级时按读个级的方法来读,读完亿级后加上一个“亿”字,读完万级后加上一个“万”字;3. 每级末尾不管有几个0都不读,每级中间和前面有一个或连续几个0,都只读一个0。编程实现:输入一个小于…
填空题
困难
知识点
题目描述
提示信息:
假设给出一个数值9876543201,直接看这个数字很难直观准确的读出来,为了准确快速的读出一个数字,想请你编写一个读数系统。

中文读数规则:1.从高位读起,先读亿级,再读万级,最后读个级;2. 读亿级和万级时按读个级的方法来读,读完亿级后加上一个“亿”字,读完万级后加上一个“万”字;3. 每级末尾不管有几个0都不读,每级中间和前面有一个或连续几个0,都只读一个0。
编程实现:
输入一个小于一百亿的正整数n(1≤n<10000000000),按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符隔开。
例如:给定一个阿拉伯数字串“9876543201”
中文读写的规范:九十八亿七千六百五十四万三千二百零一
汉语拼音字串:jiu shi ba yi qi qian liu bai wu shi si wan san qian er bai ling yi
输入描述:
输入一个小于一百亿的正整数n(1≤n<10000000000)
输出描述:
输出其对应汉语拼音字串,相邻的两个音节用一个空格符隔开
样例输入:
54321001样例输出:
wu qian si bai san shi er wan yi qian ling yi参考答案
a = input()
weishu = []
b = []
dushubiao = {0: "qian ", 1: "bai ", 2: "shi ", 3: ""}
its = {1: "yi ", 2: "er ", 3: "san ", 4: "si ", 5: "wu ", 6: "liu ", 7: "qi ", 8: "ba ", 9: "jiu "}
suf = {0: "", 1: "wan ", 2: "yi "}
def dushu(array):
st = ""
x = 0
if len(array) < 4:
x = 4 - len(array)
zero = 0
for i in array:
if i == 0:
zero += 1
else:
if zero:
zero = 0
st = st + "ling "
st = st + its[i] + dushubiao[x]
x += 1
return st
for i in reversed(a):
b = [int(i)] + b
if len(b) >= 4:
weishu = [b] + weishu
b = []
if b:
weishu = [b] + weishu
du = ""
x = 0
for i in reversed(weishu):
d=dushu(i)
if d:
s=suf[x]
else:
s=""
du = d+ s + du
x += 1
dua=du.split()
if dua[0]=="yi" and dua[1]=="shi":
du=" ".join(dua[1:])
print(du)答案解析
评判标准:
20分:能正确输出一组数据;
20分:能正确输出两组数据;
20分:能正确输出三组数据;
20分:能正确输出四组数据。
上一题
下一题