1012 数字分类 python

1012 数字分类 (20 分)

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

  • A​1​​ = 能被 5 整除的数字中所有偶数的和;
  • A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n​1​​−n​2​​+n​3​​−n​4​​⋯;
  • A​3​​ = 被 5 除后余 2 的数字的个数;
  • A​4​​ = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
  • A​5​​ = 被 5 除后余 4 的数字中最大数字。

输入格式:

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

输出格式:

对给定的 N 个正整数,按题目要求计算 A​1​​~A​5​​ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

若其中某一类数字不存在,则在相应位置输出 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的数放到对应的列表里

然后再取出来输出

ls_in=input().split(' ')
del ls_in[0]
A1=[]
A2=[]
A3=[]
A4=[]
A5=[]
#现在的ls_in是不包括N的剩余部分,且类型为str

s=len(ls_in)
for i in range(s):
    ls_in[i]=eval(ls_in[i]) #转换类型

for num in ls_in:
    if num%5==0 and num%2==0:
        A1.append(num)
    if num%5==1:
        A2.append(num)
    if num%5==2:
        A3.append(num)
    if num%5==3:
        A4.append(num)
    if num%5==4:
        A5.append(num)
outA1=0
if len(A1)>0:
    for num in A1:
        outA1+=num
else:
    outA1='N'

outA2=0
s_A2=len(A2)
if s_A2>0:
    for i in range(s_A2):
        if (i+1)%2==1:
            outA2+=A2[i]
        else:
            outA2-=A2[i]
else:
    outA2='N'

outA3=0
s_A3=len(A3)
if s_A3>0:
    outA3=s_A3
else:
    outA3='N'
    
outA4=0
sumA4=0
if len(A4)>0:
    for num in A4:
        sumA4+=num
    outA4=sumA4/len(A4)
else:
    outA4='N'

if len(A5)>0:
    outA5=max(A5)
else:
    outA5='N'
if type(outA4)!=str:
    print(outA1,outA2,outA3,'{:.1f}'.format(outA4),outA5)
else:
    print(outA1,outA2,outA3,outA4,outA5)

写的比较长,但是感觉思路挺清晰的

后面的部分因为A4涉及到保留小数点位数的问题,如果A4里面有东西,用format控制一下就好了

如果是空的,就输出N,所以最后输出的时候有两种情况

你可能感兴趣的:(PAT-B)