描述: 输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0
本题有多组输入数据,输入到文件末尾。
数据范围:1 \le n \le 50000 \1≤n≤50000 ,其中每个数都满足 |val| \le 10^{6} \∣val∣≤10 6
输入描述:输入任意个整数,每行输入一个。
输出描述:输出负数个数以及所有非负数的平均值
输入:
-13
-4
-7
输出:
3
0.0
输入:
-12
1
2
输出:
1
1.5
-1872
26187
60790
-11864
-15325
-13444
-15461
57108
51281
18112
74061
34291
64491
51051
15773
# 1/while循环获取input,获取值加入到list列表,遇到异常则break
# 2/每个list内数值split后转int类型,判断是否>0
# 3/小于0则cnt计数加1,大于0的则写入bigzero列表
# 4/bigzero列表求sum后除以len并转str分裂后组合小数点后一位
# 5/四舍五入不知怎么用直接格式format函数,只能strsplit分裂或单独弄出小数点后两位判断是否逢5进1处理
# round函数,round(3.45,1) = 3.5
def exam(inputlis):
lis = inputlis
# print(lis)
# [-13, -4, -7]
lowCount = 0
bigCount = 0
bigList = []
for i in lis:
if i<0:
lowCount += 1
if i >= 0:
bigCount += 1
bigList.append(i)
print(lowCount)
# 5
print(round(sum(bigList) / bigCount,1))
# 45314.5
if len(bigList) == 0:
print(0.0)
else:
res = sum(bigList) / bigCount
left = str(res).split('.')[0]
right = str(res).split('.')[1][0:2]
# print(left,right)
if len(right)== 2 and int(right[1]) >= 5 :
right = int(right[0])+1
else:
right = right[0]
res = str(left) + '.' + str(right)
print(res)
# 45314.5
inputlis = []
while True:
try:
inputlis.append(int(input().strip()))
except:
break
exam(inputlis=inputlis)