第三章 算法的程序实现
一、选择题
1.下列可以作为Python变量名的是( )
A."d3" B.6sd C.True D.stf_1
2.下列Python赋值语句正确的是( )
A.x+y=20 B.3x=y C.y=x+20 D.s=2π*r*r
3.如下Python程序段,运行后输出的值是( )
def factorial(n):
s=1
for i in range(2,n+1):
s=s*i
return s
total=factorial(4)
print(total)
A.24 B.4 C.44 D.16
4.已知字典dict1={"01":"Jan","02":"Feb","03":"March","04":"April","05":"May"},现要在字典dict1中增加一个键为"06"值为"June"的元素,下列语句能实现的是( )
A.dict1[06]="June" B.dict1["06"]=["06":"June"]
C.dict1["06"]={"June"} D.dict1["06"]= "June"
5.下列能判断变量x是整数的条件表达式是( )
A.x%2==1 B.x%2==0 C.int(x)==x D.random(x)=x
6.Python中的 pygame模块是专门用来开发游戏的,其中 pygame. display. set_caption(*接福游戏")的功能是()。
A.设置当前窗口标题栏的名称 B.创建一个指定大小的窗口
C.更新当前窗口 D.从文件加载新图片
7.下列程序的运行结果是( )
s="2h4j5,94af87"
n=i=0
m=len(s)
num="0123456789"
while iif s[m-i-1] in num:
n=n*10+int(s[m-i-1])
i=i+1
if n>1000:
break
print(n)
A.245 B.784 C.2459 D.7849
8.十六进制数值 10~15分别用大写字母A~F来表示,如果变量 s 表示大写字母A~F中的任意一个字母,能将变量s转换成对应数值的正确表达式是( )
A.ord(s)-ord("A")+10 B.ord(s)-ord(A)+10
C.chr(s)-chr("A")+10 D.chr(s)-chr(A)+10
二、填空题
9.某Python程序代码如下:
sfz=input("请输入您的身份证号码:")
year=int(sfz[6:10])
month=
day=int(sfz[12:14])
print("您是的出生年月日是",year,"年",month,"月",day,"日!")
程序运行后,输入"33018320050907002X"后,输出的结果为:您是的出生年月日是2005年9月7日!,则空白处的代码为________________
10.调试程序,修改代码。
要判断一个正整数n(n>=3)是否为素数,一种方法是:统计2到n-1之间所有能整除n的整数个数s,若s等于0,则n是素数,否则就不是素数,为了实现这一算法,编写代码如下,运行程序时出现错误提示
源程序 print("请输入一个大于等于3的正整数n:") n = input() s = 0 for i in range (2,n): if n % i==0: s = s + 1 if s == 0: print(n,"是素数") else: print(n,"不是素数")
运行时错误提示 请输入一个大于等于3的正整数n: 7 Traceback (most recent call last): File "D:\素数. py",line 4,in 根据错误提示,一种修改方法是:只需修改图中源程序的第2行代码,就可以使程序正常运行,则第2行应修改为:__________
11.random模块是一个________。random.randint(1,10)语句作用 ___________。
12.s=int(input(“请输入一个两位数:”))
s=s//6
print(s)
程序运行后,键盘输入31,其输出结果为 ____________
13.任意长度的python列表、元组、字符串的最后一个元素的索引值为:___________。
14.项目学习:解密盛唐时期诗人关系
(项目情境)
唐代诗人史传有名有姓者不下千余人,他们组成了大大小小不同的朋友圈。有的因为诗风接近,如李白代表的浪漫主义、杜甫代表的现实主义、王维代表的田园山水、芩参代表的边塞诗风;有的因为年龄大体相近,如盛唐时期的李白、杜甫、贺知章等;有的因为政见相近,如韩愈作为古文运动的领袖级人物,当时很多文人墨客以进入他的朋友圈为荣。在盛唐时期有这样一个朋友圈,他们的友谊跨越数十年,诗人之间通过互动诗歌,表达抒发情感,是他们朋友圈的一种表现方式,用计算机来分析这个时代的唐诗,就会发现诗人之间有着你意想不到的千丝万缕的关系。学校某研究性学习小组利用大数据分析技术,通过对诗词分析,绘制盛唐时期几位诗人(杜甫、李白、王维、孟浩然……)之间的社交关系网络图,试图推测哪位诗人是同时代诗人的核心,哪位诗人的影响最大,从而更好地学习、理解唐诗。
(项目准备)为完成项目,需要确定主题、目标、制订规划等各项工作。在此不一一展示。明确的主题—盛唐时期的诗人及诗词分析和诗人社交关系网络图
(项目实施)项目研究主要以诗人诗作为依据。具体实施过程如下:
(一)明确需要采集的数据选择合适的采集途径、工具和方法。全唐诗一共四万多首,分析采集相关数据的条件:①盛唐时期;②诗人、诗人之间经常称呼对方的别名;③考虑到同名同姓的问题,因此还需要诗人的生卒年的信息。
根据要求,完成答题。
(1)全唐诗数量较多,一共四万多首,来源分散,存储在互联网不同的服务器与各客户终端。从大数据存储与计算的角度来看,由此可知大数据具有____________的特征。(单选)
A.精确让位于模糊B.价值密度低C.分布式存储D.变化速度快
(2)网络上如此海量的关于唐诗的数据,有文字、图片、视频、音频等。这些数据种类和格式也不一致,表明各种____________数据共存于网络中。(多选)
A.结构化B.半结构化C.非结构化D.网状结构
(3)面对繁杂的数据,学习小组决定研究解密盛唐时期诗人关系,并利用计算机程序从网络中采集诗人、别名等相关的文本数据,并以一定的数据结构存储形成盛唐诗库。存储数据主要有两种方式,一种是____________,一种是数据云存储。你建议学习小组采用____________数据存储方式,理由是___________________。
(二)利用 Python程序采集、整理、分析数据。第一步,从互联网中筛选出符合条件的诗人及诗作等文本,整理并形成盛唐诗库;第二步,确定人物关系分析策略,即从唐诗库中搜索、统计诗人或别名的引用次数,确定二人之间的疏密关系,规则是诗的标题和正文中只要提到过对方,那么两者之间的引用关系加1,若一首诗中提到多次对方,只算一次引用;第三步,编写程序并调试验证。用爬虫程序段(如下图所示)采集数据。根据要求,完成答题。
base_url=’http://www./shici/lis\ t?cate=%E5%94%90%E8%AF%97%E4%B8%89%E7%99%BE%E9%A6%96&p=’ import requests import parsel import re headers={ ‘User-Agent:’Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML, like Gecko) } for i in range(1,3): the_ url=base _url+str(i) response=requests get (the _url, headers=headers) html_ str=response. text html= parsel. Selector(html_str) title_url= html. xpath(’//div[@class="poem_ content"]’).extract() f=open("poet. txt","a" ) for poet in title_url: the_peom=urls=re findall(<div class="poem_content">(.* ?)
’, poet) f write(str(the_ peom[0])) f. write("\n") f.close()
(4)使用爬虫程序获取文本数据并形成唐诗库文件,所使用的数据采集方法为____________(选填:系统日志采集法、网络数据采集法其他数据采集方法)。阅读程序可知每首诗存放于列表poem[]中(以唐诗“春晓”为例如下表),采集后的数据保存在poet.txt文件中,该文件是一个_________________(选填:数据库文件、文档文件、图像文件、网页文件)。该数据采集方法可以将非结构化数据从网页中抽取出来,将其存储为统一的数据文件,并以_______________________的方式存储(选填:结构化、半结构化)
Poem[0] Poem[1] Poem[2] Poem[3]
“春晓” “唐” “孟浩然” “春眠不觉晓,……,花落知多少”
。
(5)以诗人甲、乙为例解密二人关系,完成答题。数据处理过程中要运用一定的分析方法对大量无序的数据进行整理、分析挖掘数据内在的结构和规律,从而提取有价值的、有意义的数据。数据分析一般包括特征探索、关联分析、聚类与分类等。让计算机搜索遍历唐诗库中有关甲、乙两位诗人的诗文,统计两位诗人或别名相互的引用次数,找寻二人之间的关联。这是运用了__________________(选填:特征探索、关联分析、聚类与分类)方法进行数据分析,也是__________________(选填:枚举、二分查找、排序)算法思想去求解这一问题的体现。
(6)编制计算机程序解决问题的过程中,__________________是编程的核心,是解决问题的方法和步骤。选用Python程序设计语言编写程序,Python属于__________________(选填:分析问题、设计算法、编写程序、调试运行、机器语言、汇编语言、高级语言)。图a示意,使用__________________(选填:自然语言、流程图、伪代码)进行算法描述,且运用循环控制结构嵌套了__________________控制结构,如果要跳出本次循环体的执行,应使用__________________语句实现跳转。
(7)阅读程序(图b示意),程序中以“#”开头的语句,其作用是_______________,程序调试完成,通过“另存为”保存文件,文件后缀名为_____________。
图a import gushi #从txt文档中读取古诗 poems=gushi. readDatat()#用poems存储所有的唐诗jia=input("请输入诗人甲:") yi=input("请输入诗人乙:") gx=0 for poem in poems:#逐一列举:poem代表其中一首古诗 if jia in poem[2]and(yi in poem[0]or yi in poem[3]): gx=gx+1 #问题的解 print(jia,'"写给",yi,"的古诗共",gx,"首") 图b
(三)分析数据进行可视化表达并推测盛唐时期诗人关系。
(8)解密盛唐时期诗人关系。数据的可视化以易于理解的方式展示和诠释数据之间的关系、趋势与规律等,使人们更好地理解数据。从常用和实用的维度,数据可视化的呈现类型主要分为探索型和解释型,其中_________型可以帮助人们发现数据背后的价值,_________型则把数据简单明了地解释给人们(选填:探索、解释)。数据分析类型不同可视化呈现方式也不同,如关于趋势的分析,可用_________类型的图表呈现,关于比例的分析,可用_________类型的图表呈现关于关系的分析,可用_________类型的图表呈现。
(9)解密盛唐时期诗人关系。学习小组选择用网络关系图呈现盛唐时期诗人社会网络关系(如图所示)。图中箭头表示诗人之间的引用关系,如李白引用了贺知章,那么就有李白指向贺知章箭头;箭头的粗细程度则表示了诗人之间引用关系的强弱,如李白引用孟浩然的数量达4次,箭头就要粗一些。________
(10)解密盛唐时期诗人关系。观察图示,从绘制的盛唐的诗人社交关系网络图,尝试推测哪位诗人是盛唐诗人的核心,哪位诗人的影响最大,请简要阐述。(要求100字左右)________
三、判断题
15.Python是动态语言,变量需要根据其要赋予的值提前定义数据类型。(______)
16.列表中的元素可以是不同数据类型(_____)
17.下列程序段中,赋值语句s=s+i被重复执行了4次。
s=0
For i in range(3,10,2):
s=s+i (_____)
18.Python程序语言中的“=”和数学上的“=”是一回事。(_____)
19.(必修)Java、Access、VB都是计算机编程语言。 (_____)
20.python语言是一种面向对象的解释型计算机程序设计语言,发明于1989年。目前,python已经成为最受欢迎的程序设计语言之一。 (_____)
四、简答题
21.先后输入两个数,如果前一个数大于后一个数,则交换前后两个数的值;否则,两个数保持不变。
22.根据输入的百分制分数,将其转换为等级制(优、良、中、及格、不及格)并输出。
五、操作题
23.现有字典如下,根据题目要求,写出相关的表达式:
xingzuo = { ‘小明’:‘巨蟹座’,‘小红’:‘处女座’,‘小兰’:‘金牛座’}
(1)现要取出小红所对应的星座,写出相关表达式:
___________________________________________________________
(2)现发现,“小兰”同学的星座应该是“水瓶座”,请帮忙修改。
__________________________________________________________
(3)现发现,在字典中漏写了关于“小贝”的信息,现已知“小贝”为“双子座”,请帮忙添加。
_________________________________________________________
(4)写出删除该字典的表达式:
___________________________________________________________
试卷第2页,共3页
参考答案
1.D
2.C
3.A
4.D
5.C
6.A
7.D
8.A
9.int(sfz[10:12])
10.n = int(input())
11.随机库 在1到10中随机生成一个数字。
12.5
13.-1
14.C ABC 数据本地存储 云存储 方便文件共享,只需联网就可读取文件,可以脱离本地计算机保存文件。 网络数据采集法 文档文件 结构化 关联分析 排序 设计算法 高级语言 流程图 判断循环 break 解释、注释 .py 探索 解释 折线图、柱形图、柱线混合图
饼状图、堆叠面截图、百分比圆环图、圈图 散点图、雷达图、网络关系图、词云图、数据地图、动态势力图、3D动态显示图 如局部图b所示。由引用次数可知,从社交关系从深至浅来说,杜甫的好友依次是李白、孟浩然、王维;李白的好友是孟浩然、杜甫、贺知章;贺知章没有好友;王维的好友只有孟浩然;孟浩然的好友只有王维。 如局部图b所示。由被引用次数可知,李白的被引用次数是12,孟浩然的被引用次数是8,杜甫的被引用次数是3,王维的被引用次数是2,贺知章的被引用次数是2。故李白是是盛唐诗人的核心;从引用别人的次数来看,杜甫的引用别人的次数是15,李白的引用别人的次数是9,维的引用别人的次数是2,孟浩然的引用别人的次数是1,王贺知章的引用别人的次数是0。故杜甫的影响最大。
15.错误
16.对
17.正确
18.错误
19.错误
20.对
21.a=int(input("请输入第一个整数:"))
b=int(input("请输入第二个整数:"))
if a-b>0:
a,b=b,a
print(a,b)
else:
print(a,b)
22.score=eval(input("请输入你的分数:"))
if score>=90:
print("等级为优")
elif 80<=score<90:
print("等级为良")
elif 70<=score<80:
print("等级为中")
elif 60<=score<50:
print("等级为及格")
else:
print("等级为不及格")
23.xingzuo[“小红”] xingzuo[“小兰”]=“水瓶座” xingzuo[“小贝”]=“双子座” del xingzuo
答案第1页,共2页
答案第1页,共2页