python一个年级段有三个班,输入各班级人数,统计总人数
时间: 2024-09-18 11:05:27 浏览: 21
在Python中,你可以通过定义一个函数来实现这个功能。假设我们有一个简单的字典结构来存储每个班级的人数,我们可以这样做:
```python
def total_students(class_info):
# 定义一个字典,键为班级名,值为人数
class_distribution = {
'一班': 0,
'二班': 0,
'三班': 0
}
# 输入各班级人数
for key in class_info:
if key in class_distribution:
class_distribution[key] = class_info[key]
# 统计并返回总人数
total = sum(class_distribution.values())
return total, class_distribution
# 示例:输入三年级各班人数
students_per_class = {'一班': 50, '二班': 60, '三班': 70}
total, classes_distribution = total_students(students_per_class)
print(f"总人数是:{total}")
print("各班级人数分布:", classes_distribution)
相关问题
编写一个班级成绩排序程序。班级有班级号,班级人数和若干学生,每个学生有学号、姓名、三门课成绩。按学生总成绩从高到底进行排序。 【输入形式】输入班级号,及班级人数;然后输入班级中每个学生信息。 【输出形式】输出班级信息,以及按总成绩从高到底输出学生信息。 【样例输入】1(班级号) 3(班级人数) 1 a 98 89 78(输入三个学生信息,学号、姓名、三门课成绩) 2 b 78 86 67 3 c 87 98 96 【样例输出】class no:1 numbers:3 3 c 87 98 96 281 1 a 98 89 78 265 2 b 78 86 67 231c
以下是Python3代码实现:
```python
class Student:
def __init__(self, id, name, score1, score2, score3):
self.id = id
self.name = name
self.score1 = score1
self.score2 = score2
self.score3 = score3
self.total_score = score1 + score2 + score3 # 计算总成绩
def __lt__(self, other):
return self.total_score > other.total_score # 重载小于运算符,按总成绩从高到底排序
class Class:
def __init__(self, class_no, num_students):
self.class_no = class_no
self.num_students = num_students
self.students = []
def input_students(self):
for i in range(self.num_students):
id, name, score1, score2, score3 = input().split()
student = Student(int(id), name, int(score1), int(score2), int(score3))
self.students.append(student)
def sort_students(self):
self.students.sort()
def output_class_info(self):
print("class no:{} numbers:{}".format(self.class_no, self.num_students))
def output_students_info(self):
for student in self.students:
print("{} {} {} {} {} {}".format(student.id, student.name, student.score1, student.score2, student.score3, student.total_score))
class_no, num_students = input().split()
class_no = int(class_no)
num_students = int(num_students)
class_obj = Class(class_no, num_students)
class_obj.input_students()
class_obj.sort_students()
class_obj.output_class_info()
class_obj.output_students_info()
```
输入样例:
```
1 3
1 a 98 89 78
2 b 78 86 67
3 c 87 98 96
```
输出样例:
```
class no:1 numbers:3
3 c 87 98 96 281
1 a 98 89 78 265
2 b 78 86 67 231
```
我需要将给定文件夹中的所有Excel表数据,汇总到一个给定的Excel表中,请按照以下要求,编写Python: 一、每个分表中有两个sheet,第一个是班级基本信息,第二个是班级学生成绩排名; 二、班级基本信息sheet中,班级编号、教师姓名、班级人数,班长,教师姓名; 三、班级成绩排名sheet中,第一列是序号、第二列是学号、第三列是学生姓名、第四列是成绩; 四、总表只需要一个sheet,并且需将列设置为序号、班级编号、教师姓名、班级人数、班长、学号、学生姓名、成绩; 五、班级编号、教师姓名、班级人数,必须要和每个学生的成绩信息一一对应; 六、做一个程序运行进度条,表示已复制到的学生条目数。
好的,根据您的要求,我可以提供以下代码:
```python
import os
import openpyxl
from tqdm import tqdm
def merge_excel_data(input_folder, output_file):
# 获取所有Excel文件
files = [f for f in os.listdir(input_folder) if f.endswith('.xlsx')]
# 创建输出文件
wb_out = openpyxl.Workbook()
ws_out = wb_out.active
# 添加表头
headers = ['序号', '班级编号', '教师姓名', '班级人数', '班长', '学号', '学生姓名', '成绩']
for col, header in enumerate(headers, start=1):
ws_out.cell(row=1, column=col, value=header)
# 遍历每个Excel文件
total_students = 0
for file in tqdm(files, desc='处理中'):
wb = openpyxl.load_workbook(os.path.join(input_folder, file))
# 处理班级基本信息sheet,获取班级编号、教师姓名、班级人数、班长信息
ws_class = wb.worksheets[0]
class_data = {
'班级编号': ws_class.cell(row=2, column=2).value,
'教师姓名': ws_class.cell(row=2, column=4).value,
'班级人数': ws_class.cell(row=3, column=2).value,
'班长': ws_class.cell(row=4, column=2).value
}
# 处理班级成绩排名sheet,获取每个学生的学号、姓名、成绩
ws_score = wb.worksheets[1]
for row in range(2, ws_score.max_row+1):
student_data = {
'学号': ws_score.cell(row=row, column=2).value,
'学生姓名': ws_score.cell(row=row, column=3).value,
'成绩': ws_score.cell(row=row, column=4).value
}
# 将班级基本信息和学生信息合并到一行中
row_data = dict(class_data, **student_data)
# 写入总表中
ws_out.append([total_students+1]+list(row_data.values()))
# 更新进度条
total_students += 1
tqdm.write('已处理 {} 条学生记录'.format(total_students))
# 保存输出文件
wb_out.save(output_file)
print('输出文件保存成功:{}'.format(output_file))
# 测试代码
if __name__ == '__main__':
input_folder = 'Excel文件夹路径'
output_file = '输出文件路径.xlsx'
merge_excel_data(input_folder, output_file)
```
请将代码中的 `Excel文件夹路径` 和 `输出文件路径.xlsx` 替换为您实际的文件夹路径和输出文件路径。