内容正文:
2.3 程序设计基本知识
一、选择题
1.以下哪个Python代码片段正确地实现了一个双分支选择结构( )
A.if x > 10: print("x is big")
B.if x > 10: print("x is big") else: print("x is small")
C.if x > 10 print("x is big"):
D.if x > 10: then print("x is big")
2.在Python中,range()函数的作用是( )
A.返回一个列表 B.返回一个元组
C.返回一个指定范围内的整数序列 D.返回一个空值
3.在Python语言中,下面程序段运行结果是( )
w=2
if w<=1:
m=12
elif w<3:
m=12+(w-1)*3
else :
m=18+(w-3)*2
print(m)
A.2 B.12 C.15 D.16
4.Python表达式“abs(3-5%3**2)//2”的值是( )
A.1 B.2 C.4 D.5
5.智能农业大棚中的自动温度控制系统,通过温度传感器每隔一定时间采集大棚中的温度,一旦监测到环境温度超过预设的最高温度40℃,控制系统会启动通风和喷水子系统实现降温;如果温度低于预设的最低温度18℃,控制系统会启动加热器,给大棚升温。下列Python程序段功能为:列表1st中存放的是某温度传感器某时段内采集的温度值,找出其中最大值max和最小值min。
1st=[20.5,21,20.8,19.8,21.5]
max=min=lst[0]
for i in range((1) ):
if (2) :
max=lst[i]
elif min>lst[i]:
min=lst[i]
print("最大值是:",max,"最小值是:",min)
上述程序段中划线处可选语句为( )
①1,len(1st)-1 ②1,len(1st) ③max<1st[i] ④max>1st[i]
A.①③ B.②③ C.①④ D.②④
6.有如下Python程序:
s=input('请输入字符串:')
ans=''
a=[1,2,3]
for i in range(len(s)):
x=s[i]
key=a[i%3]
if '0'<=x<='9':
ans=ans+chr((ord(x)-48+key)%10+48) #字符'0'的ASCII是48
else:
ans=ans+x
print(ans)
执行该程序后,输入s的值为'A1b9',输出的结果是( )
A.A2b1 B.A3b0 C.bA30 D.b0A6
7.在Python中,函数round(5.38,1)的返回值是( )
A.5.0 B.5.3 C.5.4 D.不确定
8.在Python中,执行以下语句后,显示的结果是( )
>>>x=3;y=12
>>>x+=1
>>>y//=x
>>>x+y
A.7 B.15 C.6 D.4
9.在Python中,运行以下代码后,输出“@”符号的个数是( )
>>>i=5
>>>while i<30:
print("@")
i=i+5
A.4 B.5 C.6 D.7
10.有如下Python程序段:
import random
a=[1]*5
i=1
while i<len(a):
a[i]=a[i-1]+random. randint (0,2)*2
for j in range(i):
if a[i]==a[j]:
i=j
break
i+=1
print(a)
执行该程序后,输出的结果可能是( )
A.[1,3,9,11,15] B.[1, 3, 5, 9, 13] C.[1,5,7,10,13] D.[1, 5, 5, 9, 13]
11.已知a、b 为整型变量,下列表达式的值一定为False的是( )
A.a!=b B.a>b and b>a C.a>=b or b>=a D.a==b
12.下列代码的输出结果是什么?( )
def sum(a,b):
c = a + b
return c
print(sum(4,5))
A.4 B.5 C.9 D.1
13.在tkinter模块中可以用来创建按钮的是( )
A.Button B.Label C.Entry D.Frame
14.运行以下 Python语言程序段后,s的输出结果是( )
s=10
a=1
while a<=3:
s=s-a
a=a+1
print ("s=",s)
A.s=9 B.s=4 C.s=10 D.s=1
15.变量标识符命名正确的是( )
A.while B.521_zhongguo C.!123s D.a_3
16.下面( )不是Python 合法的变量名。
A.int32 B.40XL C.self D.name
17.在Python运行环境下,按顺序输入如下指令,变量a的值是( )
a=1
a='hello'
a=[1,'hello']
a=1+2
A.1 B.'hello' C.[1,'hello'] D.3
18.下列关于关系运算符的叙述,不正确的是( )
A.x=y判断x是否等于y
B.x! =y判断x是否不等于y
C.x>y判断x是否大于y
D.x>=y判断x是否大于等于y
二、填空题
19.运行下面Python代码,
a=23
b=int(a/10)
a=a-b*10
print(a,b)
运行后,a的值为 ,b的值为 。
20.在Python中,使用 关键字可以定义一个函数。
21.在Python中,使用 可以进行列表推导。
22.在编程中, 是指程序在执行过程中遇到的错误,导致程序不能正常运行。
23.编程语言中的 语句用于控制程序的流程,根据条件是否满足来决定执行哪一段代码。
24.某 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时,程序输出结果是 。
三、判断题
25.表达式list('[1, 2, 3]')的值是[1, 2, 3]。( )
26.对于带有else子句的循环语句,如果是因为循环条件表达式不成立而自然结束循环,则执行else子句中的代码。( )
27.在python中,for i in range(10),i值从1变化到10,共10个循环。( )
28.在Python语言中,表达式x=2.4/8+10%3执行后, 用print语句输出,则屏幕显示的结果是1.3。
29.NAME、name、Name、NaMe是不同的变量。( )
30.字典是Python语言中的一种数据类型,其中每个元素包含键和值两部分。( )
四、操作题
31.编写Python程序,本程序要求完成的功能如下:计算s=10/101+10/102+10/103+10/104+…+10/n的值(n的值由输入决定为120)。
32.从键盘接收一组不重复整数,并将这组整数按从小到大的顺序排列。
以下程序采取快速排序法对这组整数进行排序。
快速排序法的原理是:
(1)取这组数据中间那个数为锚定值mid;
(2)从这组数据开头往右找,遇到比mid大的数则停下,位置记为i;
(3)从这组数据末尾往左找,遇到比mid小的数则停下,位置记为j;
(4)如果此时i仍在j左边,即i<=j,则交换这两个数;
(5)重复(2)~(4)直到i、j重合;
(6)对i左边的数进行快速排序;
(7)对右边的数进行快速排序。
输入示例:
请输入需要排序的一组整数,数与数之间用空格隔开:6 10 11 8 4 1 9 7
输出示例:
排序结果:1 4 6 7 8 9 10 11
程序模板:
def QuickSort(left,right):
if :
return
mid=Numbers[left+(right-left)//2]
i=left
j=right
while i<j:
while Numbers[i]<mid:
i+=1
while Numbers[j]>mid:
j-=1
if i<=j:
QuickSort(left,j-1)
QuickSort(i+1,right)
Numbers=list(map(int,input("请输入需要排序的一组整数,数与数之间用空格隔开"). ))
QuickSort(0, )
print("排序结果:",end="")
for i in Numbers:
print(i,end=" ")
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python基础。
单分支要想实现双分支,需要编写else结构。选项A、C、D缺少else分支,其中选项C缺少冒号,选项D结构错误,多了then,故正确答案为:选项B。
2.C
【详解】本题考查Python函数的描述。在Python中,range()函数用于生成一个指定范围内的整数序列。它不返回列表或元组,而是返回一个range对象,该对象可以通过迭代来访问其中的整数。故选C。
3.C
【详解】本题考查Python基础。
初始化 w = 2。
进入 if-elif-else 结构:
首先检查 if w<=1:,由于 w 的值是 2,不满足这个条件,所以不会执行这个分支下的 m=12。
然后检查 elif w<3:,由于 w 的值是 2,满足这个条件(2 小于 3),所以会执行这个分支下的代码 m=12+(w-1)*3。
既然已经找到了满足条件的分支并执行了相应的代码,就不会再检查 else 分支了。
在 elif 分支中,计算 m 的值:m = 12 + (2-1)*3。这里 (2-1)*3 计算结果为 3,所以 m = 12 + 3 = 15。
最后,打印 m 的值,即 print(m) 会输出 15。
故正确答案为:选项C。
4.A
【详解】本题考查Python基础。
3的平方为9,5取余9为5,3-5=-2,-2的绝对值为2,2//2=1。故正确答案为:选项A。
5.B
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,该程序段算法思想是先假定列表lst第一个元素lst[0]为最大值max、最小值min,在[1,len(1st)-1]内,列表元素lst[i]分别与max、min进行比较,若max<lst[i]成立,则最大值为lst[i];若min>lst[i]成立,则最小值为lst[i]。结合range函数特点,②1,len(1st)、③max<1st[i]符合题意,故本题答案是B选项。
6.B
【详解】本题考查程序分析。
该程序功能为:切片字符串s,切片索引为i,当s[i]为字母时,累加到ans空串中。当s[i]为数字字符时,转换成数值,向后移动key位后,转换成字符累加到ans中。当s='A1b9',i=0,s[i]='A',ans的第一个字符为A。故排除选项C、D。当i=1,key=2,s[i]=1,则向后移动2位后,为3。故ans第二个字符为3,排除选项A。故正确答案为选项B。
7.C
【详解】本题考查Python函数的应用。round是四舍五入函数,函数round(5.38,1)表示将5.38四舍五入保留1位小数,因此返回值是5.4。故选C。
8.A
【详解】本题考查Python基础。x+=1,则x=4。y//=x,则y=3。x+y结果为7。故选择A。
9.B
【详解】本题考查Python程序。首先,变量i被初始化为5,然后通过while循环,每次i增加5,打印一个“@”符号,直到i不再小于30。由于初始值是5,每次增加5,所以在30之前会打印5个“@”符号,然后i的值将会等于30,不再满足循环条件,循环结束。因此,输出“@”符号的个数是5。故答案为:B。
10.B
【详解】本题考查Python程序设计相关内容。分析程序段,a[0]=1,该程序段通过随机函数产生随机数:0,1,2,由语句“a[i]=a[i-1]+random. randint (0,2)*2”知,当前项将等于前一项,或比前一项大2或4,若当前项等于前一项,则重新产生该项,即最后生成序列中不可能出现重复值,且为递增的奇数序列。A选项,a[2]=9,比a[1]大6,选项错误。B选项,为可能序列。C选项,a[3]=10,为偶数,选项错误。D选项,a[1]与a[2]相等,选项错误。故本题答案是B选项。
11.B
【详解】本题考查的是Python表达式。and是同真为真,a>b And b>a,这两个条件不会同时满足。故本题应选B。
12.C
【详解】本题考查程序设计相关内容。分析程序段,其功能是调用sum函数计算两数之和。故本题答案是C选项。
13.A
【详解】本题考查Python tkinter模块相关内容。tkinter是Python的一个标准库,用于创建GUI应用程序。Button是它用于创建按钮控件。Label是Python Tkinter标签组件之一,主要显示指定的窗口中的文本和图像。Entry用于创建单行文本框,允许用户输入文本。Frame控件是一个用于组织和管理其他控件的容器,它可以将其他控件放置在自己内部,用于创建更复杂的用户界面。故本题答案是A选项。
14.B
【详解】本题考查Python程序设计相关内容。分析程序段,其运行过程:(1)a=1,a<=3成立,执行循环体:s=s-a=9,a=a+1=2;(2)a=2,a<=3成立,执行循环体:s=s-a=7,a=a+1=3;(3)a=3,a<=3成立,执行循环体:s=s-a=4,a=a+1=4;(4)a=4,a<=3不成立,结束循环。s的输出结果是4,故本题答案是B选项。
15.D
【详解】本题考查Python变量定义相关内容。变量命名规则:(1)只能由字母、数字、下划线构成;(2)在标识符中数字不能开头;(3)保留关键字不能作为标识符使用;(4)在标识符中,字母区分大小写。A选项为保留关键字;B选项以数字开头;C选项含有“!”;D选项符合变量定义命名规则。故本题答案是D选项。
16.B
【详解】本题考查Python变量命名。在Python中,变量名必须遵循一定的规则:变量名只能包含字母(A-Z,a-z)、数字(0-9)和下划线(_)。变量名不能以数字开头。变量名不能是Python的关键字或保留字。根据这些规则,我们可以检查给出的选项:int32:合法,它只包含字母和数字,并且没有以数字开头。40XL:不合法,因为它以数字开头。self:合法,尽管它是Python中的一个特殊变量名(通常用于类实例中引用实例本身),但它仍然是一个有效的变量名。name:合法,只包含字母。因此,不是Python合法变量名的是 40XL。故答案为B选项。
17.D
【详解】本题考查Python语句执行。4条语句均是给变量a进行赋值,最后一条语句会更新a=1+2=3,故选D。
【点睛】
18.A
【详解】本题主要考查Python关系运算符的描述。x==y判断x是否等于y,x=y表示将y赋值给x,故本题选A选项。
19. 3 2
【详解】本题考查Python基础。b=int(a/10)=int(23/10)=int(2.3)=2;a=a-b*10=23-20=3。故正确答案为:①3;②2。
20.def
【详解】本题考查Python。在Python中,使用def关键字来定义一个函数。通过def后跟函数名、参数列表以及函数体,明确了函数的功能和执行逻辑,这是Python中创建自定义函数的标准方式,方便代码的模块化和复用。故答案为:def。
21.list comprehension
【详解】本题考查Python程序设计相关内容。Python中的列表推导式(list comprehension)是一种方便快捷的语法,可以快速地生成列表。它的语法形式类似于数学中的集合推导式,语义也相似,因而易于理解和使用。故本题答案是:list comprehension。
22.错误或异常
【详解】本题考查计算机编程。编程中,错误或异常是指程序在执行过程中遇到的问题,导致程序不能按照预期或正常方式运行。这些问题可能由语法错误、逻辑错误、运行时环境问题等引起。错误通常会导致程序的终止或不正确的行为,需要开发者通过调试和修复来解决。故答案为:错误或异常。
23.条件
【详解】本题考查计算机程序设计语言。编程语言中的条件语句(如if语句)用于控制程序的流程,根据条件是否满足来决定执行哪一段代码,实现程序的分支逻辑。故正确答案为:条件。
24.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。
25.错误
【详解】本题考查Python基础。
表达式 list('[1, 2, 3]') 的值并不是 [1, 2, 3]。在Python中,list() 函数用于将可迭代对象转换为列表,但如果直接传入一个字符串,list() 函数会将字符串中的每个字符视为列表的一个单独元素。故错误。
26.正确
【详解】本题考查Python基础。
在Python中,for循环和while循环都可以带有else子句。这个else子句的作用是在循环正常完成(即没有因为break语句而提前退出)后执行。如果循环因为循环条件不再满足(对于while循环)或者迭代对象被完全遍历(对于for循环)而自然结束,那么就会执行else子句中的代码。故正确。
27.错误
【详解】本题考查Python基础。
题目中的for循环i值是从0变化到9。故错误。
28.正确
【详解】本题考查的是Python表达式。在Python中:/表示除,%表示求余。2.4/8+10%3=1.3。题干中的说法正确。
29.正确
【详解】本题考查Python变量的描述。Python变量区分字母的大小写,故表述正确。
30.正确
【详解】本题考查的是Python数据类型。字典是Python语言中的一种数据类型,其中每个元素包含键和值两部分。说法正确。
31.s=0
n=int(input("please input a number: "))
for i in range(101,n+1):
s=s+10/i
print(s)
【详解】本题考查程序设计。
该程序累加由循环构造的分数,并输出求和结果。初始化累加变量s=0。调用input函数,键盘输入累加的最后一个分数的分母。使用for循环遍历分母,分母由range函数产生,参数起始值为101,终止值为n+1。分子为数字10。每次循环通过s=s+10/i累加到变量s,最后输出s。
32. left>=right Numbers[i],Numbers[j]=Numbers[j],Numbers[i] split() len(Numbers)-1
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,推知:
①处,由快速排序法的原理可知,在i、j重合前,可以执行快速排序,重合后结束排序,故此处答案是是:left>=right。
②处,由“如果此时i仍在j左边,即i<=j,则交换这两个数”知,在i<=j成立时,应执行Numbers[i]与Numbers[j]的交换,故此处答案是:Numbers[i],Numbers[j]=Numbers[j],Numbers[i]。
③处,map(int,input().split())将输入的值(input.split()的东西也叫做可迭代对象)通过空格分开,int函数将其转化为整型数据,map()函数将输入的多个数据的结果生成一个迭代器,故此处答案是:split()。
④处,主程序内,依据快速排序法的原理来调用QuickSort函数,应以Numbers的最小(0)、最大(len(Numbers)-1)索引号为参数,分别传值给left与right,故此处答案是:len(Numbers)-1。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$