首页 > 试题广场 >

记负均正

[编程题]记负均正
  • 热度指数:263501 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。

数据范围: ,输入的整数都满足

输入描述:

首先输入一个正整数n,
然后输入n个整数。



输出描述:

输出负数的个数,和所有正整数的平均值。

示例1

输入

11 
1 2 3 4 5 6 7 8 9 0 -1

输出

1 5.0
示例2

输入

3
0 0 0

输出

0 0.0
while True:
    try:
        str1 = input()#记录没用的玩意儿
        str2 = input().split()#记录有用的玩意儿,以空格区分
        str2=list(map(int, str2))#转换为int格式
        c1 = 0
        c2 = 0
        total = 0
        for i in range (len(str2)):#遍历
            if str2[i] >0:#为正时
                c1 = c1 + 1#正数数量+1
                total = total +str2[i] #正数总和相加
            elif str2[i] <0:#为负时
                c2 = c2 +1#负数数量加一
        if c1 != 0:#总和不为零时
            avg = total / c1 #得出平均值
            avg = format(avg,'.1f') #保留一位小数
        else:
            avg =0
        str3 = str(c2)+ " " + str(avg)#打印出来
        print(str3)
    except:
        break

发表于 2021-06-30 22:38:31 回复(0)
while True:
    try:
        n = int(input())
        countneg = 0
        countpos = 0
        total = 0
        for i in map(int, input().split()):
            if i < 0:
                countneg += 1
            elif i > 0:
                countpos += 1
                total += i
        print(countneg, format(total/countpos,'.1f'))
    except:
        break
发表于 2021-04-20 18:10:43 回复(0)

while True:
try:
n=input()
m=input().split()
count=0
zheng=0
sum=0
for i in m:
if int(i)<0:
count+=1
for j in m:
if int(j)>0:
sum+=int(j)
zheng+=1
a=sum/zheng
print(str(count)+' '+str('%.1f'%a))
except:
break

发表于 2021-04-14 09:02:25 回复(0)
无语了,貌似测试用例的分隔符是tab而不是空格,所以如果用split(' ')的话在本地能跑,提交后跑不了,改成用split()就可以了
while True:
    try:
        num = int(input())
        ints = list(map(int, input().split()))
        nums_pos = list(filter(lambda x: x>0, ints))
        nums_neg = list(filter(lambda x: x<0, ints))
        if len(nums_neg) == len(ints):
            print(len(nums_neg), 0)
        else:
            print(len(nums_neg), format(sum(nums_pos)/len(nums_pos), '.1f'))
    except EOFError:
        break


发表于 2021-03-24 16:34:55 回复(0)
while True:
    try:
        n, nums = int(input()), map(int, input().split())
        negative_count, positive_count, posivive_sum = 0, 0, 0
        
        for n in nums:
            if n < 0:
                negative_count += 1
            elif n > 0:
                positive_count += 1
                posivive_sum += n
        
        print("{} {:.1f}".format(negative_count, posivive_sum/positive_count))
    except:
        break

发表于 2020-12-19 16:03:06 回复(0)
while True:
    try:
        n, neg_count, pos_list = int(input().strip()), 0, []
        nums = map(int, input().strip().split(' '))
        for num in nums:
            if num < 0:
                neg_count += 1
            if num > 0:
                pos_list.append(num)
        if len(pos_list) == 0:
            avg = '0.0'
        else:  # 格式化字符串的结果一定是字符串
            avg = '%.1f' % (sum(pos_list)/len(pos_list))
        print(str(neg_count) + ' ' + avg)

    except:
        break

发表于 2020-12-03 20:54:55 回复(0)
while True:
    try:

        Num = int(input())

        list1 = list(map(int,input().split()))

        positive_num = []
        negative_num = []

        for i in list1:
            if i > 0:
                positive_num.append(i)
            elif i < 0:
                negative_num.append(i)


        negative_count = len(negative_num)
        mean_positive = sum(positive_num)/len(positive_num)

        print(negative_count,'%.1f' % mean_positive)
    except:
        break

发表于 2020-09-22 21:14:11 回复(0)
while True:
    try:
        k = int(input())
        a = list(map(int,input().split()))
        n, s, z = 0, 0, 0
        for i in range(len(a)):
            if a[i] < 0:
                n = n + 1
            elif a[i] > 0:
                s += a[i]
            elif a[i] == 0:
                z += 1
        print(n, end = ' ')
        print(round(s/(len(a)-n-z),1))
    except:
        break

发表于 2020-07-27 13:41:18 回复(0)
为啥总是本机可以通过,一放上去就不行啊?总是说我输出为空,我服了
发表于 2020-07-27 02:23:37 回复(0)
from functools import reduce
while True:
    try:
        n = int(input())
        num = list(map(int,input().split()))
        negative = []
        positive = []
        for i in num:
            if i < 0:
                negative.append(i)
            elif i > 0:
                positive.append(i)
        print(len(negative),end=' ')
        print(round(((reduce(lambda x,y:x+y,positive))/(len(positive))),1))

    except:
        break

发表于 2020-03-30 23:19:10 回复(1)
while True:
    try:
        a,num,pos,neg=input(),map(int,input().split()),[],0 #这里用列表pos来存放正数
        for i in num:
            if i < 0:
                neg += 1
            elif i > 0:
                pos.append(i)
        print(str(neg) + ' ' + '{:.1f}'.format(sum(pos)/len(pos))) #使用列表的sum和len方法求得列表的数值总和以及列表中数值的个数
    except:
        break

发表于 2020-02-01 15:30:36 回复(0)
各位大佬,我觉得我写的没问题,可是输出老是 0 1.0,求教原因?
try:
    num=int(raw_input())
    number=raw_input().split()
    list1=[]
    count=0
   
    for i in number:
        if int(i)<0:
            count+=1
        else:
            list1.append(int(i))
           
    print(count),
    #
    if len(list1)==0:
        print 0
    else:
        print round(sum(list1)/len(list1))
except:
    pass
发表于 2019-09-25 19:32:15 回复(0)
while True: try:
        n = int(input())
        stack = list(map(int, input().split()))
        total = 0; select = [] for elem in stack: if elem < 0:
                total += 1  if elem>0:
                select.append(elem)
        average = sum(select) / (len(select)) print(total, end=' ') if sum(select)%(len(select))==0: print(int(average)) else: print('%.1f'%average) except: break
发表于 2019-09-14 20:27:05 回复(0)
while True:
    try:
        n = eval(input())
        L = [eval(i) for i in input().split()]
        L1 = [i for i in L if i > 0] #正数列表
        L2 = [i for i in L if i < 0] #负数列表
        print('{} {:.1f}'.format(len(L2), sum(L1) / len(L1)))
    except: break

发表于 2019-08-19 16:25:42 回复(0)

python解法:


while True:
    try:
        a,nums,pos,neg=int(input()),map(int,input().split()),[],0
        for num in nums:
            if num>0:
                pos.append(num)
            elif num<0:
                neg+=1
        print(str(neg)+" 0" if not pos else str(neg)+" "+"{0:.1f}".format(sum(pos)/len(pos)))


    except:
        break
发表于 2017-10-04 16:51:35 回复(18)
try:
    while 1:
        a, b, n, t, L  = 0, 0, 0, input(), map(int, raw_input().split())
        for s in L:
            if s < 0:
                a += 1
            if s > 0:
                b += s
                n += 1
        c = (b * 1.0) / n
        c = int(c) if c % 1 == 0 else '%.1f' % c
        print a, c
except:
    pass

发表于 2017-01-05 18:33:11 回复(0)
while True:
    try:
        n = int(raw_input())
        count = 0
        count1 = 0
        s=0.0
        for data in raw_input().split():
            if int(data) < 0:
                count +=1
            elif int(data)>0:
                count1 +=1
                s = s + int(data)
        print count,round(s/count1,1)
    except:
        break

发表于 2016-09-24 00:51:36 回复(0)

问题信息

难度:
17条回答 23616浏览

热门推荐

通过挑战的用户

查看代码