前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最优雅的进行成绩等级判断的方式

最优雅的进行成绩等级判断的方式

作者头像
曼亚灿
发布2023-05-17 15:45:35
2370
发布2023-05-17 15:45:35
举报
文章被收录于专栏:亚灿网志

高端!高端!

请注意,本文编写于 986 天前,最后修改于 976 天前,其中某些信息可能已经过时。

使用Python如何优雅地进行成绩等级判断?

一般想到的方法为:

代码语言:javascript
复制
# -*- coding:utf-8 -*-
# author: Man Yacan
# Email: myxc@live.cn
# Website: https://www.manyacan.com
# datetime: 2020/9/2 20:39
# software: PyCharm


score = int(input("请输入成绩:"))  # 输入成绩

# 进行成绩判断
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'E'

print(f"成绩等级为{grade}")  # 打印成绩等级

但是这种方法重复代码太多,十分不优雅。

Python没有像JavaScript或者PHP那样的switch语句,那么该如何实现呢?

今天在网上看到一段代码,十分优雅的实现了成绩等级判断。

代码语言:javascript
复制
# -*- coding:utf-8 -*-
# author: Man Yacan
# Email: myxc@live.cn
# Website: https://www.manyacan.com
# datetime: 2020/9/2 20:39
# software: PyCharm

from bisect import bisect


def score_grade(score):
    breakpoints = [60, 70, 80, 90]
    grades = "EDCBA"
    i = bisect(breakpoints, score)
    return grades[i]


print(score_grade(int(input("请输入成绩:"))))

笔记

了解bisect类,这个类可以使用二分法在已经过排序的数组中查找元素的位置,返回该值在list中的位置,说不清,直接上代码:

代码语言:javascript
复制
from bisect import bisect, insort

breakpoints = [60, 70, 80]

insort(breakpoints, 90)

print(str(breakpoints))  # [60, 70, 80, 90]

print(bisect(breakpoints, 60))  # 1
print(bisect(breakpoints, 90))  # 4

print(bisect(breakpoints, 61))  # 1
print(bisect(breakpoints, 82))  # 3

数组在使用该方法前必须先完成排序,可以使用.sort()

代码语言:javascript
复制
In [2]: a = [1, 0, 3, 4, 7, 5]

In [3]: a.sort()

In [4]: a
Out[4]: [0, 1, 3, 4, 5, 7]

----- END -----

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 笔记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档