测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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分:能正确输出四组数据。

上一题 下一题