程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python实现学生成绩分段统计

hfteth 2025-04-27 13:55:20 技术文章 21 ℃

任务要求

1.输入成绩直到用户输入-1结束。

2.统计以下分数段人数:

  • 60分以下
  • 60~69分
  • 70~79分
  • 80~89分
  • 90~100分

3.输出各分数段人数。

任务分析

1.输入处理:使用while循环持续读取用户输入,直到检测到-1时终止。

2.分段逻辑:

  • 方法一:直接通过if-elif条件判断分数所属区间。
  • 方法二:利用字典存储分数段范围,减少重复代码。
  • 方法三:通过数学计算(如整除10)简化分段逻辑。

3.统计存储:使用字典或列表计数器记录各区间人数。

任务实现

方法一:基础条件判断

# 初始化计数器
counters = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0}
while True:
score =
input("请输入成绩(输入-1结束):")
if score == "-1":
break
try
:
score =
int(score)
if 0 <= score < 60:
counters[
0] += 1
elif 60 <= score <= 69:
counters[
1] += 1
elif 70 <= score <= 79:
counters[
2] += 1
elif 80 <= score <= 89:
counters[
3] += 1
elif 90 <= score <= 100:
counters[
4] += 1
except ValueError:
print("输入无效,请重新输入!")
# 输出结果
ranges = ["60分以下", "60~69分", "70~79分", "80~89分", "90~100分"]
for i in range(5):
print(f"{ranges[i]}人数:{counters[i]}")

说明:直接通过if-elif链判断分数区间,逻辑直观但代码冗余。适用于初学者理解分段逻辑。

方法二:字典映射分段规则

# 定义分段规则(下限: 区间索引)
rules = {90: 4, 80: 3, 70: 2, 60: 1, 0: 0}
counters = [
0] * 5
while True:
score =
input("请输入成绩(输入-1结束):")
if score == "-1":
break
try
:
score =
int(score)
for limit in sorted(rules.keys(), reverse=True):
if score >= limit:
idx = rules[limit]
if limit != 0 or score < 60 else 0
counters[idx] += 1
break
except
ValueError:
print("输入无效!")
# 输出结果
ranges = ["60分以下", "60~69", "70~79", "80~89", "90~100"]
for i, num in enumerate(counters):
print(f"{ranges[i]}人数:{num}")

说明:利用字典定义分段规则,通过逆序遍历键值实现动态匹配。优势在于规则可灵活扩展(如新增分段只需修改字典)。

方法三:数学计算分组

counters = [0] * 5
while True:
score =
input("请输入成绩(输入-1结束):")
if score == "-1":
break
try
:
score =
int(score)
if 0 <= score < 60:
counters[
0] += 1
else:
group = (score //
10) 5 # 60分以上计算分组索引
idx = min(max(group, 1), 4) # 限制索引在1~4范围内
counters[idx] += 1
except:
print("输入错误!")
print("统计结果:")
print(f"60分以下:{counters[0]}")
print(f"60~69分:{counters[1]}")
print(f"70~79分:{counters[2]}")
print(f"80~89分:{counters[3]}")
print(f"90~100分:{counters[4]}")

说明:通过整除运算score//10将分数转换为十位数值,再调整索引范围。代码简洁但需处理边界值(如100分需特殊处理)。

运行结果

从键盘上输入字符串“98”“86”“45”“68”“78”“-1”

请输入成绩(输入-1结束):98

请输入成绩(输入-1结束):86

请输入成绩(输入-1结束):45

请输入成绩(输入-1结束):68

请输入成绩(输入-1结束):78

请输入成绩(输入-1结束):-1

60分以下人数:1

60~69分人数:1

70~79分人数:1

80~89分人数:1

90~100分人数:1

进程已结束,退出代码为 0

Tags:

最近发表
标签列表