内容正文:
2.3 程序设计基本知识
一、选择题
1.下列关于Flask框架的描述,正确的是( )
A.Flask框架可直接使用,无须导入
B.Flask框架中客户端提交数据只能用POST方式提交给服务器
C.表单是网站与访问者进行互动的界面,接收输入的数据,并将其发送给Web服务器
D.Flask框架中启用一个App的默认端口号不能更改
2.在编程中,封装的概念主要用于( )
A.隐藏实现细节 B.显示所有细节
C.增加代码的可读性 D.减少代码的执行效率
3.以下哪个Python代码片段实现了一个简单的条件分支结构( )
A.if x > 10: print("x is big") B.for i in range(10): print(i)
C.while x < 10: print(x) D.print("Hello World")
4.将数学代数式表示成Python表达式,下列选项中正确的是( )
A.(x**3+xy+3y**2)**1/ 3 B.(x**3+xy+3y**2)**(1/ 3)
C.[x**3+x*y+3*(y**2)]**(1/ 3) D.(x**3+x*y+3*y**2)**(1/ 3)
5.有如下Python程序段:
text="Nol:X:123:Y:680:End"
a=[0]*10; c=0
for i in range(len(text)):
s=text[i]
if s>='0' and s<='9':
a[c]=a[c]*10+int(s)
else:
if a[c]>0:
c=c+1
print(a[1])
执行该程序段后,输出的结果是( )
A.1 B.2 C.680 D.123
6.有如Python程序段:
a=[3,1,-6,0,-1,5,2,-5,1,3]
n=len(a);q=[0]*n
head,tail=0,0
for i in range(0,n):
if head < tail:
if q[head]+a[i]>0:
q[tail]=q[tail-1]+a[i]
tail+=1
else:
head=tail
else:
if a[i]>0:
q[tail]=a[i]
tail+=1
print(tail–head)
执行以上程序段后,输出的结果为( )
A.2 B.3 C.5 D.6
7.在Python中,以下赋值语句正确的是( )
A.or=100 B.2_a=100 C.a$2=100 D.a_2=100
8.列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。对列表BookInf=[1,2,4,6,7,5,1,9,6],下列错误的是( )
A.BookInf.append(10),列表添加了10元素
B.print(BookInf[-2]),输出:1
C.BookInf.remove(BookInf[6]),print(BookInf),输出:[2,4,6,7,5,1, 9,6]
D.del(BookInf[6]),print(BookInf),输出:[1,2,4,6,7,5,9,6]
9.在Python程序中,执行print ("23"+"45") 语句的结果是( )
A.68 B.False C.2345 D."23+45"
10.有如下 Python 程序段:
a=[5,4,2,1,3,6];q=[0]*6;
head=tail=0
for i in range(len(a)):
if a[i]%2==1:
q[tail]=a[i];tail=tail+1
elif head<tail:
head+=1
print(tail-head)
执行该程序段后,输出结果为( )
A.0 B.1 C.2 D.3
11.以下属于算术运算符的是( )
A.!= B.== C.> D.%
12.以下伪代码执行后,变量a和b的值分别是( )
A.a=78 b=65 B.a=65 b=78 C.78 65 D.65 78
13.在pygame窗口中,图片的坐标点位于图片的哪个位置( )
A.图片的左上角 B.图片的右上角 C.图片的中心点 D.图片的左下角
14.以下选项中,可以让pygame程序每次更新窗口内容后延时800毫秒的是? ( )
A.pygame.time.delay(0.08) B.pygame.time.delay(800)
C.pygame.time.delay(0.8) D.pygame.time.delay(800ms)
15.n个人排成一圈,从某个人开始,按顺时针方向从No.1开始依次编号至No.n。从No.1的人开始顺时针“1,2,3,...,m,1,2,3,...”报数,报到m(m>1)的人退出圈子。这样不断循环下去,输出最后剩下的一个人的初始编号。实现该功能的Python程序段如下:
n=int(input0)
m=int(input0))
a=[]
for i in range(n):
a.append(["No."+str(i+1),(i+1)%n])
head=0;p=head;cnt=1
while p!=a[p][1]:
pre=p
p=a[p][1]
cnt+=1
if cnt==m:
print(a[p][0])
上述程序段中方框处可选代码为
①a[p][1]=a[pre][1] ②a[pre][1] =a[p][1] ③p=a[pre][1] ④p=a[p][1] ⑤cnt=1 ⑥cnt=0
则应填入的代码依次为( )
A.①③⑤ B.②④⑤ C.①③⑥ D.②③⑥
16.Python表达式 3==5的值是( )
A.True B.False C.5 D.3
17.已知s="2023金兰联考",则下列Python表达式中结果为"金兰"的是( )
A.s[-4:-3] B.s[4:5] C.s[4:6] D.s[4:8]
18.将 18≤a≤60转换为Python表达式,正确的是( )
A.a>=18 or a<=60 B.a<=18 or a>=60
C.18<=a and a<=60 D.a<= 18 and a>=60
二、填空题
19.分析完善程序:已知包含25项的数列:1,2/3,3/5,…,24/47,25/49。
问题1:写出该数列的通项公式f(n)=①
问题2:以下是计算s=1+2/3+3/5……24/47+25/49的程序,请补全代码:
s=0
for i in range(1,26):
s=s+ ②
print("s",s)
20.某超市举办年中促销活动,顾客一次性购买商品的金额若在500元以内(包括500元),打9折。若超过500元,打8折。其中x表示顾客购买商品的金额,y表示应付款。请编程计算应付款y。
x=float(input("请输入顾客购买商品的金额:"))
x<=500:
y=x*0.9
else:
y=x*0.8
print("应付款为:",y)
21.Python表达式'ab'in'acbed'的值为 。
22.表示x在区间(a,b]内的Python表达式是 。
23.某 Python 程序如下:
n = int (input ())
sum = a = 3
res = 0
i=1
while i <= n:
res = res + sum
sum = sum * 10 + a
i = i + 1
print (res)
当输入n值为3时,程序输出结果是 。
24.Python语言中,当a=4,b=2时,not(a==b)的值是 。
三、判断题
25.定义Python函数时必须指定函数返回值类型。( )
26.Python使用缩进来体现代码之间的逻辑关系。( )
27.程序设计语言的发展历程:机器语言→汇编语言→高级语言。( )
28.在Python语言中,可以用列表存储一首唐诗,如:gushi={'春晓', '唐', '孟浩然', '春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。'}。( )
29.程序设计语言与自然语言完全相同。( )
30.在Python语言中,range(4,9)中元素的个数是4个。( )
四、操作题
31.小李为自己制定了一项背单词计划,第一天背1个单词,以后每天都比前一天多背1个单词,他想知道用30天总共可以背多少个单词?请在序号处填写正确的代码,且不改变原程序的结构,并把序号删除,调试完成后保存文件。
sum= ①
index=1 #记录背单词的天数
n=30
while ② <=n:
sum=③ +index
index=④
print("记住的单词总量是",sum)
32.《九章算术》中记载的“更相减损法”算法可以求任意两个正整数的最大公约数,原文描述为:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”
具体步骤是:
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,重复用2约简,直至两数不都是偶数,执行第二步。
第二步:比较第一步中约简后的两数,以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。重复这个操作,直到所得的减数和差相等为止。
第三步:第一步中约掉的若干个2的乘积与第二步中等数的乘积即为所求的最大公约数。
示例:用“更相减损法”求78和24的最大公约数
第一步:由于两者都是偶数,故用2约简1次得到39和12
第二步:辗转相减39和12,39-12-27,27-12=15,15-12=3,12-3=9,9-3=6,6-3=3
第三步:第一步中约掉的若干个2的乘积和3相乘,2*1*3=6即为78和24的最大公约数程序运行效果如下图所示:
请输入第一个正整数:78
请输入第二个正整数:24
所求最大公约数为:6.0
利用Python实现程序如下,请在划线处填入合适的代码。
a=int(input("请输入第一个正整数:"))
b=int(input("请输入第二个正整数:"))
i=s=1
while① :
a=a/2
b=b/2
②
i=i+1
while a!=b:
if a>b:
③
else:
b=b-a
print("所求最大公约数为:" ④ )
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查Flask框架。Flask是第三方库,需要导入才能使用;Flask框架中,客户端可以用POST或GET等方式提交数据给服务器;Flask框架启用App的端口号可以更改。故选C。
2.A
【详解】本题考查编程的描述。封装是面向对象编程中的一个重要概念,主要用于隐藏实现细节。通过封装,类的内部实现细节对外部不可见,只暴露必要的接口,从而提高代码的安全性和可维护性。选项B、C、D都不符合封装的主要目的。故选A。
3.A
【详解】本题考查分支结构。条件分支结构是根据给定的条件来决定执行不同的代码块。选项A中的if x > 10: print("x is big")是一个典型的条件分支结构,它根据变量x与10的大小比较来决定是否执行print("x is big")这部分代码。选项B中的for i in range(10): print(i)是一个循环结构,用于按特定范围重复执行代码。选项C中的while x < 10: print(x)是一个while循环结构,根据条件决定是否循环执行代码。选项D中的print("Hello World")只是简单的输出语句,没有涉及条件判断。故答案为:A。
4.D
【详解】本题考查Python基础。
数学代数式用Python表示为(x**3+x*y+3*y**2)**(1/3),因此答案为D。
5.C
【详解】本题考查Python程序。程序的执行过程如下:首先,定义了字符串text="Nol:X:123:Y:680:End"和数组a=[0]*10,以及变量c=0。然后,程序遍历字符串text中的每个字符。对于每个字符s,检查它是否是数字(即在'0'到'9'之间):如果是数字,则将其转换为整数并添加到数组a的当前位置a[c]中。如果不是数字,检查当前位置a[c]是否大于0,如果是,则将索引c自增1。最后,输出数组a中索引为1的元素,即a[1]。根据给定的字符串text="Nol:X:123:Y:680:End",程序执行时提取了其中的数字部分,即123和680,分别存储在a[0]和a[1]中。因此,输出结果应为a[1]的值,即680。故答案为:C。
6.A
【详解】本题考查Python程序。程序通过遍历列表a并将连续和为正数的子数组存入列表q中,最后输出满足条件的子数组长度。具体程序流程如下:初始化:列表a定义为[3,1,-6,0,-1,5,2,-5,1,3]。n为列表a的长度(假设ben(a)返回长度),即n=10。列表q初始化为长度为n的零列表,即q=[0]*n。head和tail指针初始化为0。遍历列表a:使用for循环,从i=0到i=9遍历列表a的每个元素。处理每个元素a[i]:如果head0,则将a[i]添加到q[tail],并增加tail指针。否则,将head指针设为tail。如果head>=tail:如果a[i]>0,则将a[i]直接存入q[tail],并增加tail指针。打印结果:最后输出tail-head,即满足条件的子数组长度。根据上述流程,可知最终输出的结果为2。故答案为:A。
7.D
【详解】本题考查Python变量。Python中,变量名必须遵循一定的规则才能正确定义,规则包括:变量名只能包含字母(大小写均可)、数字和下划线,不能包含空格或特殊字符。变量名不能以数字开头,可以包含数字,但不能只包含数字。变量名不能是Python的关键字(例如if、else、for等)。根据这些规则,选项a_2=100是正确的赋值语句,因为只有它符合了Python变量命名的规则。故答案为:D。
8.B
【详解】本题考查了Python列表的基本操作。BookInf.append(10)会在列表末尾添加元素10,A选项正确。print(BookInf[-2])会输出倒数第二个元素,即9,而不是1,B选项错误。BookInf.remove(BookInf[6])会移除列表中第6个元素,即第一个1,之后打印列表,输出为[2,4,6,7,5,1,9,6],C选项正确。del(BookInf[6])会删除列表中的第6个元素,即第一个1,之后打印列表,输出为[1,2,4,6,7,5,9,6],D选项正确。故答案为:B。
9.C
【详解】本题考查Python输出语句。字符串相加运算,即将两者拼接起来,因此"23"+"45"="2345",输出语句中字符串会原样显示,即输出结果是2345。故选C。
10.B
【详解】本题考查Python程序调试与执行。分析程序,当a[i]是奇数时,则将a[i]保存到q中,同时tail递增1,若a[i]是偶数且head<tail时,则head递增1。第一次循环,a[i]=5,则tail=1,第二次循环,a[i]=2,执行elif,head=1;第三次循环,不满足判断条件,跳过;第四次循环,a[i]=1,则tail=2;第五次循环,a[i]=3,则tail=3;第六次循环,a[i]=6,head=2,循环结束。因此输出tail-head=3-2=1。故选B。
11.D
【详解】本题考查Python运算符相关内容。!=、==、>属于关系运算符,%属于算术运算符。故本题答案是D选项。
12.D
【详解】本题考查Python程序。输入a=78,b=65,因为78>65,所以执行“a>b”后的语句,先将a(78)赋给m,再将b(65)赋给a,最后将m(78)赋给b,此时a=65,b=78。故答案为:D。
13.A
【详解】本题考查Python基础。
在pygame窗口中,图片的坐标点(通常指的是图片被绘制到窗口时所使用的坐标)默认位于图片的左上角。这是大多数图形库(包括pygame)在处理图像时的标准约定。故正确答案为:选项A。
14.B
【详解】本题考查Python基础。
在pygame中,要让程序每次更新窗口内容后延时800毫秒,应该使用pygame.time.delay(800)。这个函数接受一个整数参数,表示要延迟的毫秒数。故正确答案为:选项B。
15.B
【详解】本题考查Python程序设计相关内容。本题描述的是约瑟夫环算法,采用循环链表解决题目要求。分析程序段,cnt为计数器,每报数一个,计数器cnt加1,若cnt等于指定的m,则在循环链表中将该节点前驱节点与后继节点连接,删除该节点,且cnt重置为1,其代码为:a[pre][1] =a[p][1];p=a[p][1];cnt=1。故本题答案是B选项。
16.B
【详解】本题考查Python表达式。在Python中,==是相等比较操作符,用于检查两个值是否相等。由于3并不等于5,因此该表达式的值为False。故答案为:B。
17.C
【详解】本题考查Python字符串切片操作。切片操作基本表达式:object[start_index:end_index:step],step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。start_index:表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值。end_index:表示终止索引(不包含该索引对应值),该参数省略时,表示一直取到数据“端点”。已知s="2023金兰联考",s[-4:-3]=s[4:5]="金",s[4:6]="金兰",s[4:8]="金兰联考"。故选C。
18.C
【详解】本题考查的是Python表达式。18≤a≤60转换为Python表达式为:18<=a and a<=60。选项C正确。
19. n/(2*n-1)或n/(n*2-1) i/(2*i-1)或i/(i*2-1)
【详解】本题考查程序分析。
①第n项,规律为分母为奇数2*n-1,分子为n,故通项公式为n/(2*n-1)或n/(n*2-1)。
②for循环遍历数字1到25,循序变量为i,累加每项的值到变量s,根据通项公式可知:i/(2*i-1)或i/(i*2-1)。
20.if
【详解】本题考查Python程序。程序中需要根据输入的购买商品金额x来确定应付款y的计算方式。使用if语句进行条件判断,如果x<=500,则执行y=x*0.9;否则(即x>500),执行y=x*0.8。所以此处应填if,以实现根据不同条件计算应付款的功能。故答案为:if。
21.False
【详解】本题考查Python程序设计相关内容。在Python中,in是一个运算符,用于检查一个值是否存在于一个序列(如字符串、列表、元组、集合)中,返回一个布尔值,即True或False,指示该值是否存在于序列中。字符串'ab'不在'acbed'中,其结果为False,故本题答案是:False。
22.x>a and x<=b或a<x<=b
【详解】本题考查的是Python表达式。x在区间(a,b]表示x大于a,同时x小于等于b,因此对应的Python表达式是x>a and x<=b或a<x<=b。
23.369
【详解】本题考查的是Python循环语句。初始i=1,sum = a = 3,当输入n值为3时。
i<=3成立,res = res+sum=3, sum=sum*10+a=30+3=33,i=i+1=2;
i<=3成立,res = res+sum=36, sum=sum*10+a=330+3=333,i=i+1=3;
i<=3成立,res = res+sum=369, sum=sum*10+a=3330+3=3333,i=i+1=4;
i<=3不成立,故输出res为369。
24.True
【详解】本题考查的是Python表达式。当a=4,b=2时,a==b值为:False,not取反,故not(a==b)的值是True。
25.错误
【详解】本题考查Python基础。
在Python中,定义函数时不需要显式指定函数的返回值类型,这与一些静态类型语言(如C++、Java或TypeScript)不同。Python是一种动态类型语言,这意味着变量的类型是在运行时动态确定的,而不是在编写代码时静态确定的。故错误。
26.正确
【详解】本题考查Python基础。
Python 使用缩进来定义代码块(block)的范围。缩进是语法的一部分,这意味着缩进的正确使用对于程序的正确执行至关重要。Python 的这种设计选择强调了代码的可读性和简洁性。故正确。
27.正确
【详解】本题考查程序设计语言。计算机程序设计语言的发展是从低级到高级逐步演变的。最开始是机器语言,由二进制代码组成,难以理解和编写;之后出现了汇编语言,使用助记符来代替机器指令,提高了一定的可读性;再后来发展出了高级语言,如 C、Java、Python 等,更接近人类的自然语言和数学表达式,易于学习和使用。所以程序设计语言的发展历程是机器语言→汇编语言→高级语言。故说法正确。
28.错误
【详解】本题考查的是列表相关知识。在Python中,列表用[]表示,gushi={'春晓', '唐', '孟浩然', '春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。'}不属于列表,说法错误。
29.错误
【详解】本题考查程序设计语言的描述。程序设计语言是用于书写计算机程序的语言,语言的基础是一组记号和一组规则,根据规则由记号构成的记号串的总体就是语言。程序设计语言的发展经历了机器语言、汇编语言、高级语言等过程;高级语言是一种接近于自然语言的编程语言,但不是完全相同。故表述错误。
30.错误
【详解】本题考查Python函数的应用。range(start, stop, [step]),start:计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop:计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。故使用函数range(4,9)返回的整数序列是4,5,6,7,8。题干说法错误。
31. 0 index sum index+1
【详解】本题考查Python程序综合应用。初始时候总单词量设置为0,所以①处应该填写0;在while循环的条件中,我们需要确保index(天数)小于或等于n(总天数),所以②处应该填写index;在循环体内,我们需要将当天背的单词数(index)加到总单词数(sum)上,所以③处应该填写sum;最后,我们需要更新index的值,以便在下一轮循环中背更多的单词。由于每天背的单词数比前一天多1个,所以④处应该填写index + 1。
32. a%2==0 and b%2==0 s=s*2 a=a-b a*s
【详解】本题考查Python程序设计。1、循环条件判断a,b是否同时为偶数,故a%2==0 and b%2==0。2、如果是偶数则累乘给变量s,故结果填写s=s*2。3、根据算法当a大于b时,故a=a-b。4、若干个2的乘积与第二步中等数的乘积即为所求的最大公约数,故最大公约数为a*s。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$