PTA:Python解答1012 数字分类

1012 数字分类 (20分)

给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:

  • A1 = 能被5整除的数字中所有偶数的和;
  • A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…;
  • A3 = 被5除后余2的数字的个数;
  • A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
  • A5 = 被5除后余4的数字中最大数字。

输入格式:

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。

输出格式:

对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。若其中某一类数字不存在,则在相应位置输出“N”。

输入样例1:

13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出样例1:

30 11 2 9.7 9

输入样例2:

8 1 2 4 5 6 7 9 16

输出样例2:

N 11 2 N 9

解题思路:

这个题按照题目要求的A1~A5进行判断一遍就行了,if语句较多,尽量少嵌套。

完整代码:

n = list(map(eval,input().split()))
del n[0]
a = 0
b = []
c = 0
d = 0
e = []
count =0
bl = 0
for i in n:
    if i%10 == 0:
        a += i
    if i%5 == 1:
        b.append(i)
    if i%5 == 2:
        c += 1
    if i%5 == 3:
        d += i
        count += 1
    if i%5 == 4:
        e.append(i)
if a == 0:
    print('N',end=' ')
else:
    print(a,end=' ')
if b == []:
    print('N',end=' ')
else:
    for i in range(len(b)):
        if i%2 == 0:
            bl += b[i]
        else:
            bl -= b[i]
    print(bl,end=' ')
if c == 0:
    print('N',end=' ')
else:
    print(c,end=' ')
if d == 0:
    print('N',end=' ')
else:
    print('{:.1f}'.format(d/count),end=' ')
if e == []:
    print('N')
else:
    e.sort(key = lambda x:x,reverse = True)
    print(e[0])
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注