内容正文:
4.1 程序设计语言的基础知识
一、选择题
1.下列选项中属于字符串常量的是( )
A.1457 B.a*b C."890" D.Abc
2.王伟东同学准备用下列的变量名来进行编程,在程序运行中不会报错的是( )
A.we_1 B.3we C.he&w D.input
3.Python的数据类型不包含以下哪种( )
A.Number B.Long C.List D.Dictionary
4.在Python语言中,数据的输出是通过( )来实现的。
A.input()函数 B.print()函数 C.output()函数 D.abs()函数
5.有如下Python程序段:
def f(x):
if x == 1 or x == 2:
return 1
else:
return f(x - 1) + f(x - 2)
s = 0
for i in range(1, 4):
s += f(i)
print(s)
执行该程序段后,f函数被调用的次数是( )
A.3 B.4 C.5 D.10
6.以下不能创建一个字典的语句是 ( )
A.dict1 = { }
B.dict2 = { 3 : 5 }
C.dict3 = {[1,2,3]: “uestc”}
D.dict4 = {(1,2,3): “uestc”}
7.有如下程序段:
def f(x):
for i in b:
if x==i:
return True
return False
a=[2,0,9,3,10]
b=[10,9,16,2,7]
for i in a:
if f(i):
cnt+=1
print(cnt)
程序执行后的输出结果是()
A.1 B.2 C.3 D.4
8.下列关于 random. random()函数的叙述,不正确的是( )
A.生成一个0~1之间的随机浮点数
B.生成数范围包括0但不包括1
C.程序中需使用 import random
D.生成数范围不包括0但包括1
9.c=0
for i in range(1,26):
If i%2==0:
c=c+1
Print(c)
上面程序运行结果是( )
A.12 B.13 C.14 D.15
10.同桌在用python编程时总是分不清“=”和“==”,请为他解释一下在python表达式a==b中“==”表示的意思是( )
A.交换“==”左右两边变量的值 B.把“==”左边变量的值赋值给右边变量
C.把“==”右边变量的值赋值给左边变量 D.判断“==”左右两边的值是否相等
11.文件st.xlsx第一张Excel工作表存放了学生信息,单元格A1、B1、C1的值分别为“姓名”、“性别”、“出生年龄”,部分程序代码如下:
import pandas as pd
s1=pd.read_excel(″st.xlsx″)
s1.insert(0,column='班级',value='-(1)')
s2=s1.sort_values('出生年龄')
执行该程序代码后,下列说法错误的是( )
A.对象s1中对象一定是按“出生年龄”升序排列 B.除索引列外,对象s1有4列数据
C.对象s2中,每一行的班级列的值均为'-(1)' D.对象s1中,索引列的值是升序排列的
12.与关系表达式x==0等价的表达式是( )
A.x=0 B.not x C.x D.x!=1
13.下列 Python 程序段的功能:统计出物化技组合成绩大于等于270分的人数。
# 某次测试七名学生的物理、化学、技术成绩被存储在变量 score 中
score={"物理":[87,85,83,90,85,88,91],"化学":[91,92,85,90,89,84,92],
"技术":[97,89,93,95,93,87,94]}
count=0
km=["物理","化学","技术"]
for i in range(7):
sum=0
for j in km:
__________
if sum>=270:
count+=1
print("成绩大于等于 270 分的人数",count)
为实现上述功能,划线处正确的 Python 表达式是( )
A.sum+=score[i][j] B.sum+=score[j][i] C.sum+=score[j] D.sum+=score[i]
14.在Python中,要交换变量x和y,应使用语句( )
A.x=y; y=x B.x=y; у=z; z=x C.z=x;y=x;y=z D.x, y=y, x
15.有如下 Python 程序段:
import random
a=[0]*6
for i in range(6):
x=int(random.random()*10)+1
if i%2==1:
a[i]=2*x+1
elif x%2==0:
a[i]=x//2
else:
a[i]=x-1
print(a)
执行该程序段后,列表 a 中的值可能是 ( )
A.3,11,4,19,2,13 B.3,11,7,9,2,3
C.9,3,1,23,4,17 D.3,3,9,0,19,8
16.对于连续函数f(x),如果在区间[a,b]上满足:f(a)f(b)<0,则区间[a,b]内至少存在一点e,使得f(ε)=0。如此,可以引入二分查找法求解复杂函数的零点,思路如下:取区间中点c=(a+b)/2,如果f(a)f(c)<0,则零点位于区间[a,c]内;否则零点位于区间[c,b]内。对零点存在的区间继续取中点,以此类推,直到当前中点对应函数值的绝对值小于可接受误差为止。对于函数f(x)=ex*lnx-x2,使用二分法求零点的Python程序如下:
import math
def fun(x):
return math.exp(x)*math.log(x)-x**2
"'math.exp(x)返回 e 的x次幂, math.log(x)返回x的自然对数"'
def binary(c,left,right):
cur root=left
while ① _ :
if abs(fun(left))<c:
return left
elif abs(fun(right))<c:
return right
else:
mid=(left+right)/2
if ② :
right=mid
else:
left=mid
cur_root=left
③
c,left,right=le-6,1,4
print("函数的零点为: ",binary(c,left,right))
划线处应填入的代码为( )
A.①abs(fun(cur_root))<c ②(fun(left)*fun(mid))<0 ③return mid
B.①abs(fun(mid))>c ②(fun(left)*fun(mid))<0 ③return cur_root
C.①abs(fun(mid))<c ②(fun(left)*fun(mid))>0 ③return mid
D.①abs(fun(cur_root))>c ②(fun(left)*fun(mid))<0 ③return cur_root
17.有以下程序段:
a,b,c,d=input( ).split( )
a=int(a)
b=int(b)
c=int(c)
d=int(d)
print(c)
如果输入的是4 3 6 9,则程序运行的结果为 ( )
A.6 B.4 C.3 D.9
18.在Python中,表达式23//2**3的值是( )
A.2 B.2.3 C.3 D.1331
二、填空题
19.在Python中,(13 % 5)**2的结果是 。
20.我们还可以利用计算机来模拟“割圆术”计算验证圆周率。如图所示,设圆的半径为1,正n边形的边长AB=xn,弦心距为hn,面积为Sn,正2n边形的边长AC=x2n;由勾股定理即可推导出,其中x6=1。观察发现,正2n边形的面积等于正n边形的面积加上n个等腰三角形的面积,即。利用这个推导公式,编写如下程序,求解π的近似值。据此完成下面小题。
from math import* #从math模块调用常用的数学函数
n=int(input("请输入多边形的边数:"))
i=6
x=1
s=6*sqrt(3)/4 #sqrt():math中的函数,用于求算术平方根
while i<=n/2: #当i>n/2时,结束循环,执行print()
h=sqrt(1-(x/2)**2)
s=s+i*x*(1-h)/2
x=sqrt((x/2)**2+(1-h)**2)
i=2*i
print("当正多边形的边数为",n,"时,π的近似值为:",s)
1. 按照数字化工具的功能分类,Python语言编程软件属于( )
A.信息传输工具 B.信息加工工具 C. 信息检索工具 D.信息存储工具
2. Python文件的后缀名为( )
A..c B..jar C. .xls D..py
3. s=6*sqrt(3)/4是一条( )
A.输入语句 B.赋值语句 C. 输出语句 D.注释语句
4. “(x/2)**2+(1-h)**2”表达的代数式是( )
A. B.
C. D.
5. “i<=n/2”中包含①算术表达式②逻辑表达式③关系表达式④赋值表达式( )
A.①② B.①③ C. ②④ D.②③
6. 程序中“#当i>n/2时,结束循环,执行print()”的功能为( )
A.数据输入 B.数据输出 C. 注释或解释 D.赋值
7. “print("当正多边形的边数为",n,"时,π的近似值为:",s)”的作用是( )
A.数据输入 B.数据输出 C. 运算 D.赋值
8. 在h=sqrt(1-(x/2)**2)语句中,**是( )运算符。
A.乘 B.除 C. 求余 D.幂
9. 在Python程序设计语言中,数据输入通过input函数来实现,input函数的返回值是( )
A.数值 B.字符串 C. 字典 D.列表
10. 利用计算机模拟“割圆术”,计算验证圆周率,体现了数字化学习的( )特点。
A.多样性 B.局限性 C. 创造性 D.单一性
11. 编制计算机程序解决问题的一般过程为①设计算法②编写程序③调试运行程序④分析问题,正确的排序是( )
A.①②③④ B.④①②③ C. ④②①③ D.①④②③
21.现有一程序模拟竞猜某商品价格,总共有五次竞猜机会。根据程序功能,请在划线处填入合适的代码。
import random
a=random.randint (0, 100)
chance=5
print("共%d次机会"% (chance))
for i in
b=int (input("请输入一个整数: "))
if a < b:
print("大啦!!!还剩%d次机会"% (chance-i))
elif a > b:
print("小啦!!!还剩%d次机会"% (chance-i))
else:
print("恭喜您,答对啦!!!数字是%d,共用次数%d"%(a, i))
Break
22. 模块用于科学计算(随机数、数组运算等); 模块基于numpy实现,主要用于数据的处理和分析; 用于绘图库。
23.以下流程图是一个算法的描述,该算法是对A、B值进行判断,如果A不大于B,则A与B的值互换,最后输出A,B的值。
(1)根据题目中对算法的描述,则流程图中①处填写 。
(2)如果用Python语言实现“输出A,B的值”,则应该写为 。
三、操作题
24.App活跃人数存储在″app.xlsx″文件中,如下图所示,现要编程进行统计结果,请回答下列问题:
若要把“app.xlsx”第1张工作表中的信息导入到s1对象中,并进行统计,实现这个功能的python代码如下,将程序划线处填入合适的代码。
import pandas as pd
s1= ①________#读取app.xlsx文件数据,并存储在s1对象中
s1_sum= ②________#计算10月人数之和
s1_aver= ③________#计算11月人数平均值
g= ④________#按应用领域分组统计
s1_sort= ⑤________#按11月人数值,降序排序
print(″10月人数之和:″,s1_sum)
print(″11月人数平均值:″,s1_aver)
print(″各应用领域最多人数:″, ⑥________)#输出各个应用领域12月最多人数
print(________⑦ )#按11月人数值最多的3条记录
print(________⑧ )#按11月人数值最少的3条记录
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题主要考查Python数据类型。Python字符串常量是用单引号或双引号括起来,"890"属于字符串常量,故本题选C选项。
2.A
【详解】本题主要考查Python变量的命名。变量的命名规则有:只能以字母或下划线开头,不能包含特殊符号,不能是关键字。因此在程序运行中不会报错的是we_1,故本题选A选项。
3.B
【详解】本题主要考查Python数据类型。Python的六大数据类型:数字(Number)、字符串(String)、元组(Tuple)、列表(List)、集合(Set)、字典(Dictionary),故本题选B选项。
4.B
【详解】本题主要考查Python常见函数。input( )是数据输入函数,print( )是输出函数,abs( )是求绝对值函数,故本题选B选项。
5.C
【详解】本题考查Python程序。程序的执行步骤如下:定义了一个递归函数f(x),计算斐波那契数列的第x项。初始化变量s为0。使用循环遍历i在范围1到4(不包括4)之间,计算并累加f(i)到变量s。输出变量s。对于给定的循环范围1到4,程序会分别计算f(1)、f(2)和f(3),并将它们累加到变量s。在计算这些值的过程中,f(x)会涉及递归调用。具体调用次数如下:f(1)被调用1次f(2)被调用1次f(3)被调用3次(f(3)=f(2)+f(1),其中f(2)被调用1次,f(1)被调用1次)总的来说,f(x)被调用的次数为1+1+3=5次。故答案为:C。
6.C
【详解】本题主要考查字典数据类型。Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的,故不能创建一个字典的语句是dict3 = {[1,2,3]: “uestc”},故本题选C选项。
7.C
【详解】本题考查Python程序设计相关内容。分析代码段可知,该代码段功能是比较两个列表a、b,统计相同元素的个数。a=[2,0,9,3,10]、b=[10,9,16,2,7],比较两者,可得出相同元素个数为:3。故本题答案是C选项。
8.D
【详解】本题主要考查Python随机函数。random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b。random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0,故本题选D选项。
9.A
【详解】本题主要考查Python程序的执行。变量i的范围是1~25,当i是偶数时,c递增1,偶数有:2、4、6、8、10、12、14、16、18、20、22、24,故程序运行完,c=12,故本题选A选项。
10.D
【详解】本题考查Python表达式。在Python中,“==”是比较运算符,用于判断两个变量或表达式的值是否相等。当使用“==”时,Python会比较左右两边的值,如果它们相等,则返回True,否则返回False。故答案为:D。
11.A
【详解】本题考查的是pandas库相关知识。该程序的功能是读入st.xlsx中第一张工作表内容,并在索引列前增加一列班级,值均为'-(1)',将s1按出生年龄升序排列后赋值给s2,因此s1中的数据并未经过排序。
12.B
【详解】本题考查的是Python表达式。在Python中,0代表False,非0代表True,not是取反。x为0时,x==0值为True,not x值为True;x为非0时,x==0值为False,not x值为False。故选B。
13.B
【详解】本题考查Python数据字典及程序设计相关内容。分析代码段可知,若要统计出物化技组合成绩大于等于270分的人数,需要对每个人的物化技成绩进行求和。数据字典score中,每个键对应7个键值,即7个学生的同课程成绩。i的取值范围是0-6,j从["物理","化学","技术"]内取值,即score["物理"][0]、score["化学"][0]、score["技术"][0]对应第一个学生的物化技成绩,依次类推,可以使用sum+=score[j][i]来求得每个学生的物化技组合成绩。故本题答案是B选项。
14.D
【详解】本题考查的是Python赋值。在Python中,要交换变量x和y,应使用语句:z=x;x=y;y=z 或x, y=y, x。故本题应选D。
15.A
【详解】本题主要考查Python程序的调试。random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0, x=int(random.random()*10)+1,则x随机生成1~10之间的整数。如果i是奇数,则 a[i]=2*x+1也是奇数,排除选项D;如果i和x是偶数,则a[i]=x//2可能是奇数也可能是偶数;如果i是偶数,x是奇数,则a[i]=x-1是偶数,选项C中a[0]=9不符合题意,选项B中a[2]=7不符合题意,均排除。故本题选A选项。
16.D
【详解】本题主要考查二分查找及Python程序实现。变量c是精度,如果计算后的精度大于c,则进入循环继续执行,cur_root是最后的求解值,故①处while循环条件是abs(fun(cur_root))>c;由代码“right=mid”可知,此处零点位于区间[a,c]内,故②处if判断条件是(fun(left)*fun(mid))<0; cur_root=left,返回最后的解 cur_root,即③处填return cur_root,故本题选D选项。
17.A
【详解】本题考查的是Python函数。input( )是输入函数,split()通过指定分隔符对字符串进行切片,int()是转换为整型,print()是输出函数。如果输入的是4 3 6 9,程序运行后a值为4,b值为3,c值为6,d值为9,print(c)故输出的值为c的值:6。选项A正确。
18.A
【详解】本题考查的是Python表达式。**表示幂运算,优先级最高,//表示整除。23//2**3=23//8=2。故本题应选A。
19.9
【详解】本题主要考查Python表达式的运算。(13 % 5)**2=3**2=9。
20. B D B D B C B D B C B
【详解】本题主要考查Python程序的综合应用。(1)Python语言编程软件属于信息加工工具,选B选项。(2)Python文件的后缀名为.py,选D选项。(3)s=6*sqrt(3)/4是一条赋值语句,将等号右边的表达式赋给左边的变量s,选B选项。(4)Python中幂运算用“**”,故“(x/2)**2+(1-h)**2”表达的代数式是,选D选项。(5)“i<=n/2”中包含算术表达式(n/2)和关系表达式(i>n/2),选B选项。(6)“#”用于注释,故选C选项。(7)print()是输出函数,故选B选项。(8)在h=sqrt(1-(x/2)**2)语句中,**是幂运算符,选D选项。(9)input函数的返回值是字符串类型,选B选项。(10)利用计算机模拟“割圆术”,计算验证圆周率,体现了数字化学习的创造性,选C选项。(11)编制计算机程序解决问题的一般过程为:分析问题、设计算法、编写程序、调试运行程序,故选B选项。
21.range(1,chance+1,1):或range(1,chance+1):或range(1,6):或range(1,6,1):
【详解】本题考查Python函数。这个程序模拟了竞猜商品价格的过程,总共有5次竞猜机会。在划线处,应该填入一个循环来表示5次竞猜的过程。可以使用range()函数来生成一个包含1到5的整数序列,然后在循环中遍历这个序列,每次表示一次竞猜机会。在 for 循环的空白处,我们需要使用 range 函数来指定循环的次数。循环的次数应该是 chance 的值,也就是五次。所以可以有多种方式来指定循环的次数,如for i in range(1, chance+1)::这使用 range 函数指定了循环的范围,从 1 到 chance(包括 1 和 chance)。故答案为:range(1,chance+1,1):或range(1,chance+1):或range(1,6):或range(1,6,1):。
22. numpy pandas matpoltlib
【详解】本题考查的是Python库相关知识。numpy模块用于科学计算(随机数、数组运算等);pandas模块基于numpy实现,主要用于数据的处理和分析;matpoltlib用于绘图库。
23. A<=B? print(A,B)
【详解】本题主要考查算法流程图及Python语言。①该算法是对A、B值进行判断,如果A不大于B,则A与B的值互换,最后输出A,B的值,故此次判断条件是A<=B?。②如果用Python语言实现“输出A,B的值”,输出函数是print(),则应该写为print(A,B)。
24. pd.read_excel(″app.xlsx″) s1[″10月人数″].sum() s1[″11月人数″].mean() s1.groupby(″应用领域″,as_index=False) s1.sort_values(″11月人数″,ascending=False) g[″12月人数″].max() s1_sort.head(3) s1_sort.tail(3)
【详解】本题主要考查Python程序的综合应用。①取app.xlsx文件数据,并存储在s1对象中,使用read_excel()方法,故此处填pd.read_excel(″app.xlsx″)。②计算10月人数之和,使用sum()函数,故此处填s1[″10月人数″].sum()。③计算11月人数平均值,使用mean()函数,故此处填s1[″11月人数″].mean()。④按应用领域分组统计,使用groupby()函数,故此处填s1.groupby(″应用领域″,as_index=False)。⑤按11月人数值,降序排序,使用sort_values()函数,因为是降序,故参数ascending=False,故填s1.sort_values(″11月人数″,ascending=False)。⑥输出各个应用领域12月最多人数,使用max()函数,故此处填g[″12月人数″].max()。⑦按11月人数值最多的3条记录,使用head()函数,故此处填s1_sort.head(3)。⑧按11月人数值最少的3条记录,使用tail()函数,故此处填s1_sort.tail(3)。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$