写点什么

每日一题——PAT 乙级 1002 题

作者:武师叔
  • 2022 年 7 月 07 日
  • 本文字数:1100 字

    阅读完需:约 4 分钟

每日一题——PAT乙级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=0for 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=0for i in a: s=int(i) sum=sum+sprint('sum的数据类型:',type(sum)," 结果: ",sum)
d=str(sum)print("转化为字符串形式的sum"," 类型:",type(d)," 字符串形式的数:",d," 他的长度:",len(d))
flag=0for j in d: flag=flag+1 if flag==len(d): print(transform[j],end='') else: print(transform[j],end=' ')
复制代码


发布于: 刚刚阅读数: 3
用户头像

武师叔

关注

每天丰富自己,去过自己想要的生活! 2022.04.28 加入

一个喜欢最新技术,研发的人工智能专业的大二学生,用自己的代码做一些有意义的事情! 目前大二结束有去大厂研发岗实习的计划,每天丰富自己的技术,去过自己想要的实习生活。

评论

发布
暂无评论
每日一题——PAT乙级1002题_7月月更_武师叔_InfoQ写作社区