第四章程序设计基础
一、选择题
1.Python程序中以下变量名正确的是( )
A.a* B.age C.#b D.print
2.判断数值x是否在区间[a,b]内,下列表达式正确的是( )
A.x >= a and x <= b B."a" <= x <= "b"
C.a≤x≤b D.a <= x or x <= b
3.有如下 Python 程序段,假设程序运行正常,图A所示图片是原始图片,则推测程序运行结果图片是( )
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
choicelist,choice=[50,128,188,255],256
for i in choicelist:
if i
choice=i
fn='tiger02.jpg'
img=np.array(Image.open(fn).convert('L'))
rows,cols=img.shape #图像尺寸分别赋值
for i in range(rows): #依次取每个像素的坐标
for j in range(cols):
if (img[i,j]<=choice): #像素值小于等于指定值,赋值1,否则为0
img[i,j]=0
else:
img[i,j]=1
plt.figure("tiger128") #指定当前绘图对象
plt.imshow(img,cmap='gray') #显示灰度图像
plt.axis('off') #关闭图像坐标
plt.show() #弹出包含了图片的窗口
A. B. C. D.
4.下列Python变量名错误的是( )
A._1 B.BA C.cds_11 D.11_abb
5.有下列Python程序段:
a=[3,7,8,2,19,10,16,12]
n=len(a)
for i in range(2):
k=i
for j in range(i+1,n):
if a[k]k=j
if i!=k:
a[i],a[k]=a[k],a[i]
下列说法不正确的是( )
A.程序段执行后,列表a中的元素为[19,16,8,2,3,10,7,12]
B.代码“for i in range(2):”等价于“for i in range(0,2):”
C.程序段执行后,变量k的值为7
D.将代码“if i!=k:”修改为“if k>i:”,不会影响程序的运行结果
6.有如下Python程序段:
k=[29,38,78,17]
m=k[0]
for i in k:
if i>m:
m=i
print(m)
该程序段执行后,输出结果为( )
A.29 B.38 C.78 D.17
7.有如下 Python 程序段:
s=0
for k in range(3,1,-1):
if k <= 1 :
x = 1
if k <= 2 :
x = 2
if k <= 3 :
x = 3
s = s + x
print(s)
执行该程序段后,输出显示的内容是( )
A.9 B.8 C.6 D.3
8.有如下Python程序段:
for i in range(50 ,1 ,—1 ):
print(i)
则输出的最后一个元素值是( )
A.50 B.-49 C.1 D.2
二、简答题
9.判断输入的一个整数能否同时被3和7整除,若能,则输出“Yes”;否则输出“No”。
10.编写程序,根据输入的年份(4位整数),判断该年份是否是闰年。
三、操作题
11.水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身,例如:1**3+5**3+3**3=153。这类三位数也被叫做自恋数、自幂数或者阿姆斯特朗数。
[问题求解]设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。请阅读如下python程序,在空白处填写适当的表达式或语句,使程序完整。
print ("三位数之内的水仙花是:")
for x in___(100,1000):
b=x//100
s=(x//10)___
g=___
If x=(b**3 +s**3+g**3):
print(___)
四、判断题
12.def块中的代码不是主程序的一部分,会跳过该段代码.__( )__
13.在Python中,s=s+5是错误的赋值语句。___( )___
14.在循环中continue语句的作用是跳出循环的执行。__( )__
15.Python中的“=”是赋值运算符,跟数学上的“=”意义不一样。___( )___
16.如果变量a=5,那么表达式10>a and a<3的结果为False。___( )___
17.实时获得鼠标的状态并对鼠标单击做出正确的响应,只有不断地进行监听、更新游戏状态、重绘屏幕三个步骤的操作。 __( )__
五、填空题
18.以下程序引入Python的math模块,使用math模块下的floor函数对命令行输入的实数进行取整
n=input(“请输入一个实数:”)
n2= math. floor(float(n))
print(n2)
该程序段划线处应填入的代码为________。
19.阅读下列程序,写出运行结果
i = 0 sum = 0 t = 1 while sum < 10:i = i+ 1 t=t*i sum = sum + t print(sum)
运行输出结果是:_______________
20.项目学习:解密盛唐时期诗人关系
【项目情境】
唐代诗人史传有名有姓者不下千余人,他们组成了大大小小不同的朋友圈。有的因为诗风接近,如李白代表的浪漫主义、杜甫代表的现实主义、王维代表的田园山水、芩参代表的边塞诗风;有的因为年龄大体相近,如盛唐时期的李白、杜甫、贺知章等;有的因为政见相近,如韩愈作为古文运动的领袖级人物,当时很多文人墨客以进入他的朋友圈为荣。在盛唐时期有这样一个朋友圈,他们的友谊跨越数十年,诗人之间通过互动诗歌,表达抒发情感,是他们朋友圈的一种表现方式,用计算机来分析这个时代的唐诗,就会发现诗人之间有着你意想不到的千丝万缕的关系。学校某研究性学习小组利用大数据分析技术,通过对诗词分析,绘制盛唐时期几位诗人(杜甫、李白、王维、孟浩然……)之间的社交关系网络图,试图推测哪位诗人是同时代诗人的核心,哪位诗人的影响最大,从而更好地学习、理解唐诗。
【项目准备】为完成项目,需要确定主题、目标、制订规划等各项工作。在此不一一展示。明确的主题—盛唐时期的诗人及诗词分析和诗人社交关系网络图
【项目实施】项目研究主要以诗人诗作为依据。具体实施过程如下:
(一)明确需要采集的数据选择合适的采集途径、工具和方法。全唐诗一共四万多首,分析采集相关数据的条件:①盛唐时期;②诗人、诗人之间经常称呼对方的别名;③考虑到同名同姓的问题,因此还需要诗人的生卒年的信息。
根据要求,完成答题。
(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字左右)________
21.阅读下列程序,写出运行结果。
def fib(m):n1=1 n2=1 for i in range(3,m +1): t = nl + n2 n1 = n2 n2 = t return t Print(fib(5))
运行结果是:_______________
22.运行下列程序,正确的结果是_________________
s=0
for i in range (1 5):
s=s+i
print("i=",i,"s=",s)
23.x=int(input(“请输入第1个数:”))
y=int(input(“请输入第2个数:”))
if x>y:
print(x)
else:
print(y)
程序运行后,键盘输入8和6,其输出结果为_________________
试卷第页,共页
参考答案:
1.B
2.A
3.B
4.D
5.C
6.C
7.C
8.D
9.n=int(input("请输入一个整数:"))
if n%3==0 and n%7==0:
print("Yes")
else:
print("No")
10.x=int(input("请输入一个年份(四位数):"))
if x%400==0:
print("{}年是闰年".format(x))
elif x%4==0 and x%100!=0:
print("{}年是闰年".format(x))
else:
print("{}年不是闰年".format(x))
11. range %10 x% 10或x-b*100-s*10或其它同等答案 x
12.对
13.错误
14.错
15.正确
16.正确
17.对
18.import math
19.33
20. C ABC 数据本地存储 云存储 方便文件共享,只需联网就可读取文件,可以脱离本地计算机保存文件。 网络数据采集法 文档文件 结构化 关联分析 排序 设计算法 高级语言 流程图 判断循环 break 解释、注释 .py 探索 解释 折线图、柱形图、柱线混合图
饼状图、堆叠面截图、百分比圆环图、圈图 散点图、雷达图、网络关系图、词云图、数据地图、动态势力图、3D动态显示图 如局部图b所示。由引用次数可知,从社交关系从深至浅来说,杜甫的好友依次是李白、孟浩然、王维;李白的好友是孟浩然、杜甫、贺知章;贺知章没有好友;王维的好友只有孟浩然;孟浩然的好友只有王维。 如局部图b所示。由被引用次数可知,李白的被引用次数是12,孟浩然的被引用次数是8,杜甫的被引用次数是3,王维的被引用次数是2,贺知章的被引用次数是2。故李白是是盛唐诗人的核心;从引用别人的次数来看,杜甫的引用别人的次数是15,李白的引用别人的次数是9,维的引用别人的次数是2,孟浩然的引用别人的次数是1,王贺知章的引用别人的次数是0。故杜甫的影响最大。
21.5
22.i=4 s=10
23.8