内容正文:
2.3 程序设计基本知识
一、选择题
1.列表d=[1,4,2,8,5,3,7,10],以下表达式成立的是( )
A.d[1+3] > d[3] B.d[d[2] + d[0]] <= d[0] + d[6]
C.d[1] + 4 == d[1] + d[4] D.d[d[5]+1] < d[1]
2.下列叙述中,正确的选项是( )
A.用高级语言编写的程序称为源程序
B.计算机直接识别并执行的是汇编语言编写的程序
C.机器语言编写的程序需编译和链接后才能执行
D.机器语言编写的程序具有良好的可移植性
3.在Python语言中,以下语句可以得到[1,4,7,10]序列的是( )
A.range(1,10,3) B.range(1,12,4) C.range(1,11,3) D.range(0,11,2)
4.有如下 Python 程序段:
money=float(input("购物总额:"))
if money >1000:
pay=(money-1000)*0.9+950
else:
pay=money*0.95
print('应付款:',pay)
若要测试所有分支结构的程序代码是否正确,下列测试数据中最恰当的是( )
A.500,800 B.800,1000 C.1000,1200 D.1200,1500
5.MD5加密是一种将任意长度的数据转换为固定长度值的方法,被广泛用于数据完整性验证。一个简化版的MD5加密算法代码如下:
def simple_md5(s):
h=0
for char in s:
#字符“A”的ASCII码值为65
h=(h*2+ord(char))%256
hb=""
for i in range(8):
bit=h%2
hb=str(bit)+hb
h=h//2
return hb
s=input("请输入字符串:")
print(simple_md5(s))
该程序执行后输入字符串“ABD”,输出结果正确的是( )
A.11001101 B.11000100 C.11001100 D.11101001
6.程序设计语言的基本功能不包括( )
A.数据表达 B.流程控制 C.界面美化 D.模块化设计
7.小明收集本校7选3选课数据存储在“7选3选课情况.xlsx”,其数据格式如图所示(只显示了前9条记录),学科列下“1”表示相应行学生选了该学科,“0”表示未选。小明编写了如下程序,实现输出选考技术人数最多的2个班级的功能。
import pandas as pd
df=pd.read_excel("7选3选课情况.xlsx")
s=df.groupby("班级").技术.①
df=pd.DataFrame({"班级": s.index, "选技术人数": s.values})
df=df.sort_values("选技术人数", ② )
print(df.③ )
画线处的代码填写正确的是( )
A.①count() ②ascending=False ③tail (2) B.①sum() ②ascending=True ③head (2)
C.①count() ②ascending=True ③tail (2) D.①sum() ②ascending=False ③head (2)
8.在Python中,以下表达式的运算结果为2的是( )
A.16/8 B.16%8 C.16//8 D.sqrt(4)
9.下列Python表达式的值为True的是( )
A.12//3**2==16 B.3 in ["3","6"] C.len(str(1)+"3") < 4 D.”NB” in “NingBo”
10.若 z="ZhouShan",y="zhou",下列Python表达式的值为False的是( )
A.y>z B.z[1:4]!=y[1::-1] C.not(z!=y) or y in z D.len(y*2)==len(z)
11.从高度为h处释放一个小球,每次落地后弹起的高度是前一次的一半,直到小球弹起的高度不足p时视为结束,计算小球最终经过的路程s。算法流程图如图所示,①②两处应为( )
A.①h≥p? ②s=s+h*2;h=h/2 B.①h≥p? ②h=h/2;s=s+h
C.①h>p? ②s=s+h;h=h/2 D.①h>p? ②h=h/2;s=s+h*2
12.下面程序代码中n的值为( )
s=0
n=1
while s<15:
s=s+n
n=n+1
A.4 B.5 C.6 D.7
13.python表达式519% 10 * 10+519 // 10的结果为( )
A.70 B.99 C.141 D.51
14.在python内建函数中,用于获取用户输入的是( )
A.input() B.print() C.ge() D.int()
15.执行下列 Python程序,输出的是( )
shuiguo=["石榴","杨桃","香蕉","苹果"]
print(shuiguo[1])
A.石榴 B.杨桃 C.香蕉 D.苹果
16.在Python程序设计语言当中,如果a=3,b=2,则a+3*b的运行结果是( )
A.2 B.3 C.9 D.12
17.下列Python表达式中,结果为True的是( )
A.3//9==3%9 B.not (7//3**2<=1)
C.len('abc')<=3 and abs(-2)>=2 D.'abc'[0:2]=='abc'
二、填空题
18.阅读下列程序,写出运行结果。
s=0
i=0
while s<10:
i=i+1
s=s+i*i
print(s)
运行结果是 。
19.以下表达式int(-3.5)<abs(-3.1) and math.sqrt(4)>=int(3.5)的值是 。
20.编程中的 是一种设计模式,用于在运行时动态地创建对象。
21.在编程语言中, 是一种面向对象的编程语言,它支持封装、继承和多态性。
22.在编程中, 是一种错误,它发生在程序运行时,导致程序不能正常执行。
23.程序有3种基本结构, 是最简单的程序结构。
三、判断题
24.创建只包含一个元素的元组时,必须在元素后面加一个逗号,例如(3,)。( )
25.程序设计语言的发展历程:机器语言→汇编语言→高级语言。( )
26.Python中的同一个变量可以被重复赋值。( )
27.python程序中,乘除运算的优先级高于加减运算。( )
28.在 Python 语言中,条件表达式使用“=”判断两个操作数是否相等。( )
四、操作题
29.某校高二年级进行体质健康测试,测试数据存储在data.xls x文件中,部分数据如图a所示。请回答下列问题:
图a
(1)下列关于数据整理的说法,正确的是 (多选,填字母)
A.C2单元格数据出现了逻辑错误,可再次访问数据源,验证数据后进行修正
B.第5行“吴妙文”的测试数据缺失,可直接复制上一条数据记录进行填充
C.“立定跳远”列数据有厘米和米两种计数单位,需要统一数据格式
D.第6行与第7行姓名重复,可直接删除其中一行
(2)数据整理完成后,要对数据进行统计分析,要求如下:按照国家体质健康标准(总得分大于等于90的等级为优秀),统计各班级等级为优秀的人数。
现编写程序如下:
#导入需要用到的模块,代码略。
df=pd.read_excel("data.xls x")
for i in range(len(df)):
if df.at[I,"总得分"]>=90:
df.at[i"等级"]="优秀"
dfg=
加框处的代码应为 (单选,填字母)
A.df.groupby("班级",as_index=False)["总得分"].count()
B.df.group by("班级",as_index=False) ["等级"].count()
C.df.group by("等级",as_index=False).count()
D.df group by("等级",as_index=False) [“班级”].count()
(3)为了更加客观的评价各个班级的优秀情况,现计算出各班的优秀率,并绘制线形图,如图b所示,请在划线处填入合适的代码。
图b
y=[0]*16
num=[36,35,34,35,35,37,35,34,36,34,38,36,38,36,40,39] #各班级人数
for i in range(16):
x=dfg.at[i,"等级"]
y[i]=① #优秀率=优秀人数/总人数*100
plt.plot(dfg.班级,② )
#设置绘图参数,显示如图b所示线形图,代码略
(4)学校要表彰体测优秀率最高的班级,由图b可知,要表彰的班级是 班。
30.用Python编辑器打开“test\fjks9”文件夹下的文件“p9-3.py”,使用规范的Python语句,按照下列步骤顺序,逐条写出相应的代码并保存。
(1)将数值89赋给变量a。
(2)将表达式a//10的值赋给变量b。
(3)将表达式a%10的值赋给变量c。
(4)将表达式a+b的值赋给变量s。
(5)使用输出语句在屏幕上输出s的值。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python运算符与表达式相关内容。A选项,d[1+3]=d[4]=5,d[3]=8,d[1+3] > d[3]-->False。B选项,d[d[2]+d[0]]=d[2+1]=d[3]=8,d[0]+d[6]=8,d[d[2]+d[0]]<=d[0]+d[6]-->8<=8-->True。C选项,d[1]+4=8,d[1]+d[4]=4+5=9,d[1]+4==d[1]+d[4]-->8==9-->False。D选项,d[d[5]+1]=d[3+1]=5,d[d[5]+1]<d[1]-->5<4-->False。故本题答案是B选项。
2.A
【详解】本题考查程序设计语言。
A. 用高级语言编写的程序称为源程序
这个选项是正确的。高级语言编写的程序在被编译或解释之前,被称为源程序(Source Code)。这些源程序包含了程序员编写的指令,但计算机无法直接执行它们,需要通过编译器或解释器转换成计算机可执行的格式。
B. 计算机直接识别并执行的是汇编语言编写的程序
这个选项是错误的。虽然汇编语言比机器语言更接近人类语言,但它仍然是一种低级语言,需要被汇编器转换成机器语言(二进制代码)后,计算机才能直接识别和执行。
C. 机器语言编写的程序需编译和链接后才能执行
这个选项也是错误的。机器语言是计算机能够直接识别和执行的语言,它是由二进制代码组成的。因此,用机器语言编写的程序不需要编译和链接,它们已经是计算机可以直接执行的格式了。
D. 机器语言编写的程序具有良好的可移植性
这个选项同样是错误的。机器语言是与具体计算机硬件紧密相关的,不同种类的计算机有不同的机器语言。因此,用机器语言编写的程序通常只能在编写它的那种计算机上运行,而不具有可移植性。
故正确答案为:选项A。
3.C
【详解】本题考查Python。range()函数的语法是range(start,stop,step),生成一个包含从start到stop(不包含stop),步长为step的整数序列。选项A中,range(1,10,3)生成的序列是[1,4,7],不符合要求。选项B中,range(1,12,4)生成的序列是[1,5,9],不符合要求。选项C中,range(1,11,3)生成的序列是[1,4,7,10],符合要求。选项D中,range(0,11,2)生成的序列是[0,2,4,6,8,10],不符合要求。故答案为:C。
4.C
【详解】本题考查Python程序设计相关内容。若要测试所有分支结构的程序代码是否正确,则应在两个范围内分别取值,即大于1000的值和小于等于1000的值,四个选项中,只有C选项(1000,1200)符合要求。故本题答案是C选项。
5.C
【详解】本题考查程序分析。
第一个循环的运行过程:
初始h=0。
遍历字符串"A"(ASCII 65):h = (0*2 + 65) % 256 = 65。
遍历字符串"B"(ASCII 66):h = (65*2 + 66) % 256 = 196。
遍历字符串"D"(ASCII 68):h = (196*2 + 68) % 256 = 204。
分析程序得知第二个循环功能是将204转换成二进制数,故结果为:11001100。
故正确答案为:选项C。
6.C
【详解】本题考查程序设计语言。界面美化通常不是程序设计语言的基本功能。它更多地与UI设计(用户界面设计)相关,指的是对程序界面进行视觉上的优化和美化,以提高用户体验。虽然一些程序设计语言(如Java、C#等)提供了用于创建用户界面的库和工具,但界面美化本身并不是这些语言的基本功能,故选择C。
7.D
【详解】本题考查Python程序。①sum():用于计算每个班级选技术的人数总和。②ascending=False:表示按选技术人数降序排序,以便找出选考技术人数最多的班级。③head(2):用于获取排序后的前两个班级,即选考技术人数最多的2个班级。故答案为:D。
8.C
【详解】本题考查Python基础。16/8 = 2.0(浮点数除法);16%8 = 0(取余运算);16//8 = 2(整除运算);sqrt(4) = 2.0(开平方运算),故选择C。
9.C
【详解】本题考查的是Python表达式。选项A,12//3**2==16→12//9==16→1==16→False;选项B,3是数值类型,"3"是字符串类型,故3 in ["3","6"]值为:False;选项C,len(str(1)+"3") < 4→len("13") < 4→2<4→True;NB不在NingBo中,故值为:False。选C。
10.C
【详解】本题考查Python运算符与表达式相关内容。A选项,y>z-->True。B选项,z[1:4]!=y[1::-1]-->"hou"!="hz"-->True。C选项,not(z!=y) or y in z-->not True or False-->False。D选项,len(y*2)==len(z)-->8==8-->True。故本题答案是C选项。
11.A
【详解】本题考查算法流程图相关内容。分析题目内容及流程图,推知,若h≥p成立,重复执行循环体,即计算路程s,由“从高度为h处释放一个小球,每次落地后弹起的高度是前一次的一半”知,路程s计算公式为s=s+h*2,当前弹起的高度是前一次的一半,即h=h/2,所以①处应填写:h≥p?,②处应填写:s=s+h*2;h=h/2。故本题答案是A选项。
12.C
【详解】本题考查Python程序设计相关内容。该程序段通过累加的方式计算1+2+3+...的和,若和大于等于15则结束循环。循环体共执行5次,第5次时,s值为15,执行n=n+1后,n值为6,s<15不成立,结束循环。故本题答案是C选项。
13.C
【详解】本题考查的是Python表达式。%表示求余,//表示整除,*表示乘,故519% 10 * 10+519 // 10=141。选C。
14.A
【详解】本题主要考查Python常用函数。input()是输入函数,故本题选A选项。
15.B
【详解】本题考查Python列表相关内容。列表索引号从0开始,-1表示列表最后一个元素。故shuiguo[1]="杨桃",故本题应选B。
16.C
【详解】本题考查Python表达式的运算。a=3,b=2,则a+3*b=3+3*2=9,故选C。
17.C
【详解】本题考查Python表达式。3//9 == 3%9:这个表达式相当于 0 == 3,因此结果为False,A选项错误。not (7//32 <= 1):首先计算 32,得到 9。然后计算 7//9,得到 0。接下来,我们比较 0 是否小于等于 1,这是True。最后,由于表达式前有一个"not",所以结果是False,B选项错误。len('abc') <= 3 and abs(-2) >= 2:这个表达式分两部分计算。第一部分 len('abc') <= 3 是True,因为字符串'abc'的长度是3,小于或等于3。第二部分 abs(-2) >= 2 也是True,因为绝对值函数 abs(-2) 的结果是2,大于或等于2。因为这两部分都是True,所以整个表达式为True,C选项正确。'abc'[0:2] == 'abc'这个表达式切取字符串'abc'的前两个字符,即'ab',然后比较它是否等于'abc'。这是False,因为'ab'不等于'abc',D选项错误。故答案为C选项。
18.14
【详解】本题考查程序分析。
变量s累加i的平方。初始化i=0,s=0。s=1+4+9=14时,退出循环。故正确答案为:14。
19.False
【详解】本题考查Python表达式。首先计算各个部分的值:int(-3.5)将-3.5转换为整数,结果为-3。abs(-3.1)计算-3.1的绝对值,结果为3.1。math.sqrt(4)计算4的平方根,结果为2.0。int(3.5)将3.5转换为整数,结果为3。接下来进行比较:比较int(-3.5)<abs(-3.1),即-3<3.1,结果为True。比较math.sqrt(4)>=int(3.5),即2.0>=3,结果为False。最后将两个结果用and连接:True and False的结果为False。故答案为:False。
20.工厂方法(Factory Method)
【详解】本题考查计算机编程。在编程中,工厂方法是一种创建对象的设计模式。它提供了一个创建对象的接口,但将对象的具体创建工作延迟到子类中。这样可以使对象的创建和使用分离,增强了系统的灵活性和可扩展性。在运行时,可以根据不同的条件和需求,由子类来决定创建具体的对象类型,实现了对象创建的动态性。故答案为:工厂方法(Factory Method)。
21.Java
【详解】本题考查程序设计语言。Java是一种面向对象的编程语言,它支持封装、继承和多态性。Java的设计哲学是“一次编写,到处运行”,因为它的代码可以在任何支持Java虚拟机(JVM)的平台上运行。故正确答案为:Java。
22.运行时错误(Runtime Error)
【详解】本题考查计算机编程。在编程中,运行时错误(Runtime Error)是一种错误,它发生在程序执行过程中,导致程序不能正常执行。这类错误可能是由于无效的输入、资源不足或其他意外情况引起的。故答案为:运行时错误(Runtime Error)。
23.顺序结构
【详解】本题考查的知识点是程序基本结构。程序有三种基本结构:顺序结构、选择结构和循环结构。其中,顺序结构是最简单的程序结构。在顺序结构中,程序的各个操作按照它们在源代码中的排列顺序自上而下依次执行。这种结构相对直接明了,只需要按照逻辑顺序编写代码即可。故答案为:顺序结构。
24.正确
【详解】本题考查Python基础。
在Python中,要创建一个只包含一个元素的元组,确实需要在该元素后面加上一个逗号。这是因为在Python中,圆括号()通常用于定义元组(tuple)或者作为函数调用的一部分,但如果没有逗号来明确指示这是一个元组,Python解释器可能会将圆括号内的内容解释为表达式或仅仅是一个普通的值,而不是元组。故正确。
25.正确
【详解】本题考查程序设计语言。计算机程序设计语言的发展是从低级到高级逐步演变的。最开始是机器语言,由二进制代码组成,难以理解和编写;之后出现了汇编语言,使用助记符来代替机器指令,提高了一定的可读性;再后来发展出了高级语言,如 C、Java、Python 等,更接近人类的自然语言和数学表达式,易于学习和使用。所以程序设计语言的发展历程是机器语言→汇编语言→高级语言。故说法正确。
26.正确
【详解】本题考查Python基础。正确。在Python中,变量是动态类型的,这意味着你可以将一个变量从一种类型更改为另一种类型,并且你可以多次为同一个变量赋值。
27.正确
【详解】本题考查Python运算符相关内容。在Python中,算术运算符有:加、减、乘、除、取余等。乘除运算的优先级高于加减运算。故本题答案是:正确。
28.错误
【详解】本题考查Python关系表达式。=是赋值号,==表示相等,故表述错误。
29. AC B x/num[i]*100或其他等价答案 y 13
【详解】本题考查Python综合应用。
(1)数据出现逻辑错误时,应该再次访问数据源进行验证和修正;B选项错误,因为数据缺失时,不能随意复制其他数据进行填充,这可能导致数据分析的结果偏离实际;C选项正确,数据中的计数单位需要统一,以便于数据处理和分析;D选项错误,因为数据中姓名的重复并不一定意味着数据重复,应进一步核实后再决定是否删除。故答案为:AC。
(2)根据题目要求,需要统计各班级等级为优秀的人数,所以应该按照班级进行分组,然后计数等级为优秀的人数。故答案为:B。
(3)为了计算各班的优秀率,需要将优秀的人数除以总人数,然后乘以100。故答案为:x/num[i]*100。根据题目要求,需要绘制线形图,线形图的y轴应该是优秀率。故答案为:y。
(4)根据图b,体测优秀率最高的班级是13班。故答案为:13。
30.(1)a=89
(2)b=a//10
(3)c=a%10
(4)s=b+a
(5)print(s)
【详解】本题考查Python编程。1、赋值语句给变量a赋值为89。2、变量a整除10,赋值给变量b。3、变量a取余10,赋值给变量c。4、变量a加上变量b,赋值给变量s。5、调用函数print输出变量s。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$