PAT-1002-写出这个数(20分)- Python

PAT-1002-写出这个数(20分)

  • 题号:PAT-1002-写出这个数
  • 工具:python, jupyter notebook, markdown, 菜鸟教程
  • 引文链接

题目

读入一个正整数 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))
posted @ 2022-09-13 15:32  秘密特工Levi  阅读(65)  评论(0)    收藏  举报