2. 使用List集合存储10个学生信息,学生信息: 姓名,年龄,分数. 统计所有姓张的同学的平均成绩
时间: 2024-04-14 20:27:55 浏览: 95
你可以使用以下代码来实现这个功能:
```python
students = [
{"姓名": "张三", "年龄": 18, "分数": 90},
{"姓名": "张四", "年龄": 19, "分数": 85},
{"姓名": "李五", "年龄": 20, "分数": 95},
{"姓名": "张六", "年龄": 21, "分数": 88},
{"姓名": "王七", "年龄": 22, "分数": 92},
{"姓名": "赵八", "年龄": 23, "分数": 89},
{"姓名": "张九", "年龄": 24, "分数": 87},
{"姓名": "钱十", "年龄": 25, "分数": 91},
{"姓名": "孙十一", "年龄": 26, "分数": 90},
{"姓名": "张十二", "年龄": 27, "分数": 93}
]
zhang_scores = [student["分数"] for student in students if student["姓名"].startswith("张")]
average_score = sum(zhang_scores) / len(zhang_scores)
print("所有姓张的同学的平均成绩为:", average_score)
```
上述代码创建了一个包含10个学生信息的列表。然后,使用列表推导式筛选出姓张的学生的分数,并计算平均值。最后,打印出所有姓张的同学的平均成绩。
相关问题
Java 使用List集合存储10个学生信息,学生信息: 姓名,年龄,分数. 统计所有姓张的同学的平均成绩
你可以使用以下Java代码来实现这个功能:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("张三", 18, 90));
students.add(new Student("张四", 19, 85));
students.add(new Student("李五", 20, 95));
students.add(new Student("张六", 21, 88));
students.add(new Student("王七", 22, 92));
students.add(new Student("赵八", 23, 89));
students.add(new Student("张九", 24, 87));
students.add(new Student("钱十", 25, 91));
students.add(new Student("孙十一", 26, 90));
students.add(new Student("张十二", 27, 93));
int count = 0;
int sum = 0;
for (Student student : students) {
if (student.getName().startsWith("张")) {
count++;
sum += student.getScore();
}
}
double averageScore = (double) sum / count;
System.out.println("所有姓张的同学的平均成绩为: " + averageScore);
}
}
class Student {
private String name;
private int age;
private int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getScore() {
return score;
}
}
```
上述代码定义了一个`Student`类来表示学生,包含姓名、年龄和分数属性。在`Main`类的`main`方法中,创建了一个存储学生信息的`List`集合,并添加了10个学生对象。然后,使用循环遍历集合,统计所有姓张的同学的分数总和和人数。最后,计算平均成绩并打印输出。
定义Student学生类, 有id学号, name姓名, score成绩等属性定义List集合存储Student学生对象 向 List集合中添加 50 个Student对象, 要求id自增, 姓名随机生成, 成绩随机生成 要求使用stream流进行以下操作 1) 把集合中不及格同学的姓名保存到List集合中 2) 对list集合中的学生对象根据成绩降序排序, 如果成绩一样再根据学号升序排序, 把结果保存到Set集合中 3) 计算所有同学的平均分 4) 查看最高分同学 5) 查看最低分同学
下面是Java代码实现:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Student {
private int id;
private String name;
private int score;
public Student(int id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
// 添加50个学生对象
for (int i = 1; i <= 50; i++) {
String name = getRandomName();
int score = (int) (Math.random() * 101);
Student student = new Student(i, name, score);
students.add(student);
}
// 1) 把集合中不及格同学的姓名保存到List集合中
List<String> failStudents = students.stream()
.filter(s -> s.getScore() < 60)
.map(Student::getName)
.collect(Collectors.toList());
System.out.println("不及格的学生有:" + failStudents);
// 2) 对list集合中的学生对象根据成绩降序排序, 如果成绩一样再根据学号升序排序, 把结果保存到Set集合中
Set<Student> sortedStudents = students.stream()
.sorted(Comparator.comparing(Student::getScore).reversed()
.thenComparing(Student::getId))
.collect(Collectors.toCollection(LinkedHashSet::new));
System.out.println("按照成绩排序后的学生有:" + sortedStudents);
// 3) 计算所有同学的平均分
double averageScore = students.stream()
.mapToInt(Student::getScore)
.average()
.orElse(0.0);
System.out.println("所有同学的平均分为:" + averageScore);
// 4) 查看最高分同学
Optional<Student> highestScoreStudent = students.stream()
.max(Comparator.comparing(Student::getScore));
if (highestScoreStudent.isPresent()) {
System.out.println("最高分同学是:" + highestScoreStudent.get().getName() + ",分数为:" + highestScoreStudent.get().getScore());
}
// 5) 查看最低分同学
Optional<Student> lowestScoreStudent = students.stream()
.min(Comparator.comparing(Student::getScore));
if (lowestScoreStudent.isPresent()) {
System.out.println("最低分同学是:" + lowestScoreStudent.get().getName() + ",分数为:" + lowestScoreStudent.get().getScore());
}
}
private static String getRandomName() {
String[] firstName = {"张", "王", "李", "赵", "刘", "陈", "杨", "黄", "吴", "周", "徐", "孙", "马", "朱", "胡", "林", "郭", "何", "高", "罗"};
String[] lastName = {"明", "红", "华", "强", "丽", "超", "涛", "艳", "峰", "秀", "勇", "磊", "莉", "军", "婷", "鹏", "萍", "伟", "敏", "飞"};
return firstName[(int) (Math.random() * firstName.length)] + lastName[(int) (Math.random() * lastName.length)];
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)