当Python遇上高考,会发生什么?-程序员宅基地

延期一个月之后,今天,1071万考生终于走入考场。

这届高考太难了,不仅考学生,更是考验疫情的防控能力。

但是说到难,2018年浙江省教育厅的一个决定,让不少人感叹真难!

原来早在2017年底,就有消息称浙江省信息技术课程改革方案已经出台,确定将Python纳入浙江省信息技术高考!

纳尼?Python纳入高考?为什么?怎么考?想想都很难!

经了解,才明白,原来是纳入高考选考!

虽然是选考,但是看看现在市面上涌现了那么多少儿编程培训机构,可见编程越来越向低龄人群进军。

可以预见,编程正像当年的英语,是顺应了时代需求发展起来的,未来全民必备的能力!

我们不妨思考一下,当Python遇上高考后,会发生什么?

考题会是什么样?

未来,Python全面被纳入高考的那一天,我们的考题也会变成这样:

问题1:下面代码中func1(a)的结果是:

def func1(a):
    sums = sum(map(lambda x: x + 1, a[-3:]))
    return sums

a = [1,2,3,5,4,1,5]
func1(a)

A 9
B 13
C 10

问题2:有如下两个列表:

list1 = [(2),(0),(1),(8) ]
list2 = [(2,),(0,),(1,),(8,)]

那么,type(list1[0])和type(list2[0])分别是:

A int tuple
B int int
C tuple tuple

问题3:下面代码中func2(a)的结果是:

def func2(a):
    b = {}
    b = b.fromkeys(a)
    return (len(b.keys()))

a = [1,2,4,2,4,1,6,5,2,3,1]
print (func2(a))

A 11
B 6
C 5

问题4:定义如下的字符串和列表:

a = 'I love PythonSomething!'
b = 'I love PythonSomething!'
c = [1, 2, 3]
d = [1, 2, 3]

那么,a is b和c is d的结果分别是:

A False True
B True True
C True False

问题5:下面代码的输出结果为:

import copy
a = [2,[0,1],8]
b = copy.copy(a)
a[1].append(3)
print(b)
c = copy.deepcopy(a)
a[1].append(4)
print (c)

A [2, [0, 1, 3], 8]
  [2, [0, 1, 3], 8]
B [2, [0, 1, 3], 8]
  [2, [0, 1, 4], 8]
C [2, [0, 1, 4], 8]
  [2, [0, 1, 4], 8]

问题6:下面代码中f3的输出结果为:

def append_list(val, list=[]):
    list.append(val)
    return list

f1 = append_list(1)
f2 = append_list(2, [])
f3 = append_list('Python')

A [1, 'Python']
B ['Python']
C [1, 2, 'Python']

问题7:下面代码中 func3() + func4()的结果为:

x = 10

def func3():
    x = 3
    return x**2

def func4():
    return x + 5

func3() + func4()

A 24
B 21
C 115

问题8:下面代码中stu2.score的结果为:

class Student:
    score = []

stu1 = Student()
stu2 = Student()
stu1.score.append(99)
stu1.score.append(96)
stu2.score.append(98)

A [99, 96, 98]
B [98]
C [99, 98]

问题9:二分查找是非常经典的算法。已经有如下定义,请完善代码,实现二分查找算法:

def binary_search(list, item):
    '''
    :param list: 列表
    :param item: 要查找的元素
    :return: item在list中的索引,若不在list中返回None
    '''

问题10:爬虫是Python的一大应用方向。请通过Python抓取猫眼电影或者豆瓣电影评分前100的电影信息。

怎么样?这些考题你是否能Hold住? 

预测分数和录取情况

就手上有的数据,以本次山东模拟考的成绩进行深入数据分析,用python可视化带大家模拟一下2020高考分数和录取情况。

(代码较长,故只展示部分)

不同考生成绩分布图:

首先对山东新高考模拟考的成绩进行总体描述:

fig = make_subplots(rows=4,cols=2, #4行2列
                    subplot_titles=('所有考生',"物理", "历史", "化学", "地理", "生物", "政治"),
                   specs=[[{'colspan': 2},None],[{},{}],[{},{}],[{},{}],
                         ])  #specs参数定义了如何分配视图区间, 本案例中的“specs=[[{}, {}],[{'colspan': 2},None]]”表示其他行的两个子图平均分配区间, 第一行的第一个子图占据 2列的区间, 并且不存在第二个子图

fig.add_trace(go.Scatter(
    x = raw_data['分数段'], 
    y = raw_data['所有考生本段人数'],
    fill = 'tozeroy',
    mode = 'lines',    
    marker = dict(
        size = 8,
        color =   'rgb(88, 182, 192)'
     )),
    row=1, col=1,
    )

#保存图片
img_file = os.path.join(img_dir, 'img1.svg')
fig.write_image(img_file, scale=1)
fig.show()

选考物理、化学、生物的学生的成绩呈正态分布,大多数学生的成绩集中于中间,成绩两端学生的人数分布较少。

而选考文科类(历史、地理、政治)学科的学生的成绩呈偏态分布,一段线以下的人数占比较大,尤其历史和地理学科上这种趋势更加明显。

本科上线率:

通过计算各科所有选择的人中有多少人的总分在一段线以上,发现,选考物理的学生的上线率最高,达到了67%,而选考历史的学生的上线率较低,只有37%。

选考科目情况:

#所有考生的科目选择情况
sum_people = raw_data['所有考生累计人数'].iloc[-1]
subj_select = []
subj_name = ['物理','化学','生物','历史','地理','政治']
subj_select_percent = pd.DataFrame(index = subj_name,columns=['比例'])
for i in subj_name:
    singel_subj = raw_data['选考'+i+'累计人数'].iloc[-1]
    singel_percent = round(singel_subj/sum_people,4)*100
    subj_select.append(singel_percent)
    subj_select_percent.loc[i, '比例'] = singel_percent

在此次模拟中,分数在150分以上的考生共有489567人,其中选考地理的人数最多,选考比率为63.6%,选考政治的人数最少,选考比率只有34.31%,而备受大家关注的选考物理的比率为41.59%。

需要注意的是,山东2020年高考的正式选科时间是5.25-29,而模拟考的时间在1月,因此上述数据只能作为学生选科的重要参考。

双一流高校录取情况分析:

我们统计了近三年双一流高校在山东的理工类专业录取最低分,位次靠前的依次是北京大学,复旦大学,上海交通大学,浙江大学,中国科学技术大学。

我们统计了近三年双一流高校在山东的文史类专业录取最低分,位次靠前的依次是清华大学,北京大学,上海交通大学,复旦大学,中国人民大学。

双一流高校专业录取情况分析:

#南丁格尔图
pie_Nightingale(sci_top10['专业'].values.tolist(),
                sci_top10['频数'].values.tolist(),
                '录取最低分排名\n前10的理工类专业', 
                '理科专业top10.html')

我们统计了双一流高校录取最低分所对应的专业频次,结果发现,理工类专业中工科实验班的出现频次最高,双一流高校中有25个学校的录取最低分所对应的专业是工科实验班。

我们同样统计了双一流高录取最低分所对应的文史类专业的频次,结果发现,文史类专业中日语出现的频次最高,双一流高校中有25个学校的录取最低分对应的专业是日语。

怎么样?是不是很有参考价值。

告诉你高考为什么这么难?

我们首先看下1977-2018年历年的录取人数和未录取(落榜)人数变化情况,本文数据均来自于网络公开高考数据:

可以看到1977年恢复高考之后的几年,由于种种原因,高考人数到达了一个比较高的点,随后有所下降。

到2000年之后,高考的人数有了进一步的提升,录取人数也随之大幅提升,2008、2009达到了顶峰(此时心疼自己1秒),2010年之后参与高考的人数趋于平稳。

通过上图也可以发现,早期的高考难度之高,未录取人数是录取人数的数倍之多,而且早期的高考实际上在开始之前有预选的过程,能够参加高考的考生实际上已经经过了一轮大浪淘沙的过程。

随着教育改革,越来越多的考生有机会通过高考接受更进一步的教育。

我们通过下面的百分比图,对于录取率的变化进一步加深认知:

看到这不禁对老爸发出由衷的赞叹,作者参与高考时的录取率已经是老爸参加时的数倍之多,相较于老爸那个时候的“千军万马过独木桥”,作者过的独木桥已经要宽敞了好多。

部分代码如下:

setwd('D:/爬虫/高考')
data = read_excel('历年录取率.xlsx')
data_year = melt(data,id.vars = '年份',measure.vars = c('录取','未录取'),
variable.name='录取情况', value.name='人数(万)')
ggplot(data_year,aes(x=年份,y=`人数(万)`,fill=录取情况))+
      geom_area(position = 'stack')+
      ggtitle('历年高考人数统计(1977-2018)')+ theme_wsj()+ 
      theme(axis.text.x = element_text(size=15),
            axis.text.y = element_text(size=15),
            axis.title =element_text(size=15),
            plot.title = element_text(hjust=0.5,size=25,face='bold'),
            panel.grid = element_blank(),
            legend.position = 'top',
            legend.title = element_blank(),
            legend.text = element_text(size=15),
            panel.background = element_blank(),
            axis.line = element_blank(),
            axis.ticks = element_blank()
            )+xlim(1977,2018)

说到这,似乎大家会认为现在的高考并不困难,录取率已经到达了8成左右,通过高考已经成了家常便饭,如果你真的这样认为,想太多了。

我们下面就进一步去分析高考数据,为大家列举横亘在高考生面前的三座大山:

三座“大山”

名校录取率

前面我们提到的录取率有了显著的提升,然而录取率实际上是包括了所有的录取情况,同时包含了本科以及专科的录取情况。

真正的“211”,“985”名校的竞争实际上还是异常激烈的,特别是在一些处于“地狱模式”的高考省份(由于没有在网上找到海南省的相关数据,我们选取了其他三十个省份、直辖市的数据):

下面就为大家对比各个省份2018年的985、211录取率:

可以看到,不同省份的985和211录取率有着比较明显的差距,12个省份的985录取率低于1.5%,安徽,河南,江苏和贵州更是低于1.2%,作为山东考生的作者也不由得表示“自愧不如”。

即使是录取率最高的省份,985和211的录取率也只是5.8%和13.9%,结合现在各大企业在招人要求中对985和211的要求,高考真的并没有真的变得简单。

高考人数

除了名校录取率低之外,高考人数之多也是横亘在考生面前需要跨过的一个挑战。

由于参与高考人数非常多,对于考试精细度就有了非常高的要求,可能一个细节的失误就会在全省的排名中下降非常多。

同样,我们看下各省2018年参与高考的人数:

河南省2018年的高考人数达到了86.5万,86.5万这个数据也超过了世界上接近2/3的国家人口数量。广东、山东、四川三个省的高考人数也超过了50万。

由于参与高考的人数众多,这些省的高考几乎都是“肉搏战”。

高考题目难

除了名校录取率低,竞争人数多,另一个让广大考生为之“折服”的就是那些难度大到放飞自我的题目。

其中一个省份的题目难度几乎是所有考生公认的最高,那就是江苏省,包括小编所在山东省在内的很多其他省的老师,都会告诉学生不需要关注江苏的历年题目,因为本省的考试题目不会那么难。

除了题目难度大,江苏高考改革的力度和速度也是冠绝全国,我们整理了一份江苏省2000年以来的历年高考改革的路线图:

看到这些模式的名称,可能大家已经有些眩晕,也深切体会到能从江苏高考中杀出重围的都是勇士。

既然已经眩晕,不如就眩晕到底,下面是一道江苏省高考的真题,自行体验难度:

数学、物理这种大杀器都无需出场,只需一道作文题在作者这种“语文天残”看来就已经slay全场。

前面我们说了那么多高考的困难之处,是不是考生们真的就手足无措了呢,实际上并不是,只需要手握一些高考专属“杀器”就可以迎刃而解(以上纯属虚构)

高考“杀器”

五年高考三年模拟

此杀器的使用方法无需赘述,只需把其全部吃透,虽然这也不表示高考就一定会有好成绩。希望各位考生努力复习,切勿如同书名一样“五年高考,三年模拟”。

葛老师

葛老师乃高考中的超级大杀器,其威力可以参考下图,正所谓人不在江湖,但江湖上始终流传着他的传说:

由于葛老师过于强大,切勿幻想能将葛老师像“五年高考、三年模拟“那样吃透之后融会贯通,最好的方法就是“走为上计”,B站上的广大考生已经开始通过弹幕进行了实践:

虽然我们前面假想了各种Python与高考碰撞出的火花,但是实际上,不管是Python,还是高考,都是为我们的人生创造机遇的!

最后祝愿广大考生都能够放平心态,在高考中发挥所学,不留遗憾!

*注:本文部分图片来源于互联网,仅供学习、交流使用。不具有任何商业用途,若有侵权,请联系删除。

  推荐阅读  

北京大学出版社

《Python 3.x网络爬虫从零基础到项目实战

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44747933/article/details/107308318

智能推荐

大数据毕设选题 - 大数据招聘租房数据分析可视化系统(python)_题目是:大数据视角下的招聘数据分析与可视化研究-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏103次。 Hi,大家好,这里是丹成学长的毕设系列文章! 对毕设有任何疑问都可以问学长哦!这两年开始,各个学校对毕设的要求越来越高,难度也越来越大… 毕业设计耗费时间,耗费精力,甚至有些题目即使是专业的老师或者硕士生也需要很长时间,所以一旦发现问题,一定要提前准备,避免到后面措手不及,草草了事。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的新项目是 基于大数据的招聘与租房分析可视化系统学长这里给一个题目综合评分(每项满分5分) 选题指导, 项目分享:https:/_题目是:大数据视角下的招聘数据分析与可视化研究

Vice-Chairman of the European Commission: cryptocurrency assets will be greatly developed_eu commission cryptocurrency-程序员宅基地

文章浏览阅读299次。The European Commission is the executive body of EU legislation and will complete a regulatory assessment of cryptocurrency asset governance this year. The Vice-Chairman of the European Commission sai..._eu commission cryptocurrency

C# /Winform SQLite and SQLsugar_sqlite和sqsugar版本匹配-程序员宅基地

文章浏览阅读3.6k次。SQLite 创建数据库插入数据库数据DEMO注意事项:SQLsugar版本(4.9.9.11) and SQLite版本(1.0.113.0) andSystem.Data.SQLite.EF6 版本(1.0.113.0)andSystem.Data.SQLite.Linq(1.0.113.0) and .NET版本(4.0)_sqlite和sqsugar版本匹配

SQL手工注入漏洞测试(MySQL数据库)_通过在发送者字段后的cc、bcc参数进行手工注入,可以检测存在什么漏洞-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏11次。文章目录一、进入靶场二、在公告处发现注入点三、确定注入格式四、确定字段数五、确定显示字段六、查询数据库名字和版本七、查询其它数据库名称八、查询数据库表名九、查询表中字段名十、查询用户信息十一、登陆成功题目信息:背景介绍安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MySQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧..._通过在发送者字段后的cc、bcc参数进行手工注入,可以检测存在什么漏洞

docker快速入门教程_nvcr.io-程序员宅基地

文章浏览阅读876次,点赞5次,收藏10次。文章目录:1 虚拟机和容器相关概念说明1.1 虚拟机1.2 Linux容器:1.3 Docker 是什么?1.4 Docker 的用途2 docker的安装、添加用户组和启动2.1 docker在不同系统中的安装2.2 验证docker是否安装成功的命令2.3 把docker添加到用户组中2.4 启动docker4 实例:hello-world镜像4.1 查看和删除本地已经有的镜像4.2 删除镜像的时候报错:Error response from daemon: conflict: unable to re_nvcr.io

离散数学与计算机编程(一)-程序员宅基地

文章浏览阅读711次。命题函数 author:misko_leeglobal var:设含有变量的命题是命题函数,记作P(X)(P(X1,X2,Xn))(若无说明,本系列全部以单变量函数为描述方式)。则有:1.∀xP(x)表示该命题论域的合取。2.∃xP(x)表示该命题论域的析取。Content:上面的定理在计算机中的描述可以表示为。ex..._数学与计算机编程

随便推点

课程设计——迷宫问题_(*s).base=(selemtype *)realloc((*s).base,((*s).sta-程序员宅基地

文章浏览阅读3k次。课程设计——迷宫问题(C++)个人设计 2010-01-16 15:06 阅读1 评论0 字号: 大大 中中 小小 迷宫问题1设计目的、要求以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。基本要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求_(*s).base=(selemtype *)realloc((*s).base,((*s).stacksize+stackincrement)*siz

linux pthread_create_pthread_create用gcc编译的命令是什么-程序员宅基地

文章浏览阅读446次。#include int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);4个参数:第一个参数:指向线程标示符pthread_t的指针;第二个参数:设置线程的属性(一般为0)第三个参数:线程运行_pthread_create用gcc编译的命令是什么

NTP时间服务器配置-程序员宅基地

文章浏览阅读235次。1.服务器端配置: #允许这些IP向自己同步时间 restrict x.x.x.x mask x.x.x.x nomodiy notrap  #当和定义的所有server服务器无法同步后,和自身同步server 127.127.1.0fudge 127.127.1.0 stratum 10  #局域网内的上层时间服务器se..._ntp时间服务器配置

ios---label 换行,计算高度_ios label 计算文带换行符的文本高度-程序员宅基地

文章浏览阅读1.7k次。self.Label.numberOfLines = 0;//多行显示CGSize titleSize = [_content boundingRectWithSize:CGSizeMake(Kwidth-30, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIF..._ios label 计算文带换行符的文本高度

项目经理开门七件事_经理开门8件事-程序员宅基地

文章浏览阅读604次。项目经理开门七件事~¢HS†~¢HS†一、确定项目目标~¢HS†~¢HS†项目怎么可能没有目标呢?仔细想一下吧,你的项目目标明确吗?会不会有好几个目标?是否大家都有一致的认同?~¢HS†项目应该只有一个主要的目标,过多的目标会分散注意力。超过两个的主要目标,将会使项目组在以后的工作中难以分清工作重点,并且在某些目标不能实现时产生失落感。~¢HS†

Java使用DFA算法处理敏感词汇_java dfa算法 + redis-程序员宅基地

文章浏览阅读616次。1. 初始化敏感词库,将敏感词加入到HashMap中,构建DFA算法模型package com.datago.common.utils.sensitive;import java.util.*;/** * @ProjectName innovate 初始化敏感词库,将敏感词加入到HashMap中,构建DFA算法模型 * @Package com.datago.common.utils.sensitive * @Name SensitiveWordInit * @Author HB _java dfa算法 + redis

推荐文章

热门文章

相关标签