PAT (Basic Level) Practice (中文)第1002题

简介: PAT (Basic Level) Practice (中文)第1002题

一、PAT (Basic Level) Practice (中文)第1002题

这个题挺有意思,题目真的很简单,但是对于Python考察的是各种type怎么计算。因为这个老子看来半天代码,感觉没错啊,但是吧代码放到pycharm上一看报错就知道怎么回事了,那个字符之间不可以计算。虽然浪费了我好长一段时间,但是也对数据类型计算也有了更深的了解

问章末尾有详细的类型的反复转化,自己去pycharm跑一下就知道怎么回事了。

1002 写出这个数 (20 分)

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789
复制代码

输出样例:

yi san wu
复制代码

思路:

#题目大意:给一段数,把各个位置的数相加,得数在变成汉语拼音
#首先要接受n,n是一个字符串形式即str()
#把n变成列表形式list(),把每一个数相加,即为又回到了str模式
#在变成列表中的每一个数,为每一个数匹配一个汉语拼音
#所以我们还要建立一个字典,根据key匹配value
#因为输出样式里面有空格还要再加入一个循环,但是注意截止条件,最后一个不输出“ ”,即当等于len(列表),不输出空格

代码:

transform={'1':'yi','2':'er','3':'san','4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu','0':'ling'}
#输入
a=input() 
#将输入的数字字符串转换为列表的形式
b=list(a)
 #将数字中的每一位求和
c=sum(int(i) for i in b)
 #求和结果转为字符串形式,用于计算长度
d=str(c)
 #标记位,用来判断for循环的最后一个
flag=0
for j in d:
    flag=flag+1
#如果为for循环的最后一位,则不输出空格
    if flag==len(d):
        #print默认的end为end='\n',先根据情况将其修改
        print(transform[j],end='')
    else:
        print(transform[j],end=' ')
复制代码

详细的运算流程(pycharm运行)

transform={'1':'yi','2':'er','3':'san','4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu','0':'ling'}
a=input()
print("input输入的类型:",type(a))
b=list(a)
print("转发化为列表的b为:",b)
#c=sum(int(i) for i in b)
sum=0
for i in a:
    s=int(i)
    sum=sum+s
print('sum的数据类型:',type(sum),"  结果: ",sum)
d=str(sum)
print("转化为字符串形式的sum","   类型:",type(d),"   字符串形式的数:",d,"   他的长度:",len(d))
flag=0
for j in d:
    flag=flag+1
    if flag==len(d):
        print(transform[j],end='')
    else:
        print(transform[j],end=' ')



目录
相关文章
PAT (Advanced Level) Practice:1~3题
​ ✨欢迎您的订阅✨ PAT乙级专栏(更新完毕): 👉🏻【Basic Level】👈🏻 PAT甲级专栏(更新ing): 👉🏻【Advanced Level】👈🏻 ​
PAT (Advanced Level) Practice:1~3题
|
测试技术
PAT (Basic Level) Practice (中文) B1011 A+B 和 C (15 分)
PAT (Basic Level) Practice (中文) B1011 A+B 和 C (15 分)
110 0
PAT (Basic Level) Practice (中文) B1011 A+B 和 C (15 分)
PAT (Basic Level) Practice (中文) B1046 划拳 (15 分)
PAT (Basic Level) Practice (中文) B1046 划拳 (15 分)
85 0
PAT (Basic Level) Practice (中文) 1016 部分A+B (15 分)
PAT (Basic Level) Practice (中文) 1016 部分A+B (15 分)
89 0
|
移动开发 C语言
PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分)
PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分)
96 0
PAT (Advanced Level) Practice - 1148 Werewolf - Simple Version(20 分)
PAT (Advanced Level) Practice - 1148 Werewolf - Simple Version(20 分)
126 0
|
存储
PAT (Advanced Level) Practice - 1126 Eulerian Path(25 分)
PAT (Advanced Level) Practice - 1126 Eulerian Path(25 分)
140 0
PAT (Advanced Level) Practice - 1055 The World‘s Richest(25 分)
PAT (Advanced Level) Practice - 1055 The World‘s Richest(25 分)
112 0
PAT (Advanced Level) Practice - 1147 Heaps(30 分)
PAT (Advanced Level) Practice - 1147 Heaps(30 分)
120 0
PAT (Advanced Level) Practice - 1095 Cars on Campus(30 分)
PAT (Advanced Level) Practice - 1095 Cars on Campus(30 分)
134 0