You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不用if语句实现Python成绩等级判定逻辑?

无if语句实现分数等级判定方案

首先先修正你现有if语句版本的两个小问题:一是变量赋值应该是65(题目要求),二是第三个分支里的markss拼写错误,修正后的代码如下:

mark = 65
if mark > 69:
    print(mark, "marks is a Distinction")
elif 60 <= mark <= 69:
    print(mark, "marks is a Merit")
elif 50 <= mark <= 59:
    print(mark, "marks is a Pass")
else:
    print(mark, "marks is a Fail")

接下来提供两种不用if语句的实现方式:

方法一:利用列表索引映射

核心思路是根据分数所在区间,计算出对应的列表索引,直接从列表中取出等级:

mark = 65
# 按分数从低到高对应等级:<50, 50-59, 60-69, ≥70
grades = ["Fail", "Pass", "Merit", "Distinction"]
# 通过计算得到索引:mark//10 后调整区间,再用max/min限制范围
index = min(max((mark // 10) - 4, 0), 3)
print(mark, "marks is a", grades[index])

原理:

  • mark//10:65//10=6,55//10=5,45//10=4,75//10=7
  • 减4后:6-4=2,5-4=1,4-4=0,7-4=3
  • max(...,0)确保低于50时索引为0,min(...,3)确保高于70时索引为3

方法二:使用bisect模块匹配区间

bisect模块可以快速找到分数在区间列表中的插入位置,对应到等级:

import bisect

mark = 65
# 划分分数区间的临界点:50,60,70
cutoffs = [50, 60, 70]
grades = ["Fail", "Pass", "Merit", "Distinction"]
# bisect_left找到插入点,对应等级索引
index = bisect.bisect_left(cutoffs, mark)
print(mark, "marks is a", grades[index])

原理:

  • 当mark<50时,插入点是0,对应"Fail"
  • 50≤mark<60时,插入点是1,对应"Pass"
  • 60≤mark<70时,插入点是2,对应"Merit"
  • mark≥70时,插入点是3,对应"Distinction"

内容的提问来源于stack exchange,提问作者CeePee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:55:23