华为机试-105-简单-HJ105.记负均正II


一、描述

输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0
本题有多组输入数据,输入到文件末尾。
在这里插入图片描述

1.1、输入描述

输入任意个整数,每行输入一个。

1.2、输出描述

输出负数个数以及所有非负数的平均值

二、示例

2.1、示例1

输入:

-13
-4
-7

输出:

3
0.0

2.2、示例2

输入:

-12
1
2

输出:

1
1.5

三、答案(java)

3.1、方法一

package com.tzq.hwod;

import java.util.Scanner;

//注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		// 注意 hasNext 和 hasNextLine 的区别
		int temp = 0;
		int countN = 0;
		int countP = 0;
		double sum = 0.0;
		while (in.hasNextInt()) { // 注意 while 处理多个 case
			temp = in.nextInt();
			if (temp < 0) {
				countN++;
			} else if (temp > 0) {
				countP++;
				sum += temp;
			}
		}
		System.out.println(countN);
		if (countP == 0) {
			System.out.printf("0.0");
		} else {
			System.out.printf("%.1f\n", sum / countP);
		}
	}
}

在这里插入图片描述

四、答案(python 3)

4.1、方法一

这个题需要注意对文件结束的处理。以往的题目都是有确定数量的输入,可以在try里按既定数量获取input(),这一题是不定长的输出,只能判断文件结束符。方法见except

#!/usr/bin/python
# -*- coding: UTF-8 -*-

lst=[]
while True:
    try:
        lst.append(int(input()))
    except:
        break
fu=[]#负数
zn=[]#正数
for i in lst:
    if i<0:
        fu.append(i)
    else:
        zn.append(i)
#print(fu,zn)#测试用
print(len(fu))#打印负数个数
if len(zn)==0:
    print(0.0)
else:
    print(format(sum(zn)/len(zn),'.1f'))#format用法也要学会
    #print(round(sum(zn)/len(zn),1))#最好不要用round

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzq@2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值