PAT-1002-写出这个数(20分)- Python
PAT-1002-写出这个数(20分)
- 题号:PAT-1002-写出这个数
- 工具:python, jupyter notebook, markdown, 菜鸟教程
- 引文链接
- 简书-跟着白哥走-PAT 1002
- CSDN-老街小霸王-PAT 1002
- Python编程:从入门到实践 / (美) 埃里克·马瑟斯 (Eric Matthes) 著 ; 袁国忠译. -- 北京 : 人民邮电出版社, 2016.7
题目
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100 。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
方案一:求模运算
- 笔记
- n < 10100,有各个位数之和 sum < 909, 得sum最高为3位数
- 设置变量 gw、sw、bw,分别记录求和结果的个位、十位、百位
- 利用利用 列表 和 列表索引 ,控制输出
- // 整数除法运算符
# 求和
sum = 0
n = int(input())
temp = n
while temp != 0:
sum += temp % 10
temp = temp // 10
# 验证求和结果
# print(sum)
pin_yins = ["ling","yi","er","san","si",
"wu","liu","qi","ba","jiu"]
# 个位
gw = sum % 10
# 十位
sw = sum // 10 % 10
# 百位
bw = sum // 100
# 控制输出
if sw == 0 and bw == 0:
print(pin_yins[gw])
elif bw == 0:
print(pin_yins[sw] + ' ' + pin_yins[gw])
else:
print(pin_yins[bw] + ' ' + pin_yins[sw] + ' ' + pin_yins[gw])
方案二:python列表
- input() 输入为字符串
- in 取出指定字符
- append() 在列表末尾添加元素
- join() 将字符接入字符串
# 求和
sum = 0
nums = input()
for num in nums:
sum += int(num)
pin_yins = ["ling","yi","er","san","si",
"wu","liu","qi","ba","jiu"]
# 将拼音添加至结果列表
res = []
for c in str(sum):
res.append(pin_yins[int(c)])
# 将空格接入字符串输出
print(" ".join(res))

浙公网安备 33010602011771号