内容正文:
第二节 程序设计语言基础知识
一、选择题
1.Python解释器执行print('金额:{0:f}元'.format(1.5000))的结果为( )
A.金额:1.5 元 B.金额:1.500 元
C.金额:1.500000元 D.金额:¥1.50000元
2.有 Python 程序如下,运算结果是( )
A,B,C,D= 3,4,-5,6
print(A+B+C<D and A>=3 or not C<0 or D> 0)
A.0 B.1 C.True D.False
3.函数sum([1,2,3,4])的值是( )
A.4 B.1 C.10 D.5
4.有如下Python程序段:
n=int(input("n="))
a,b=1,2
for i in range(1,n):
c=a+b
a=2*a
b=2*b
print(c)
程序执行时,输入n的值为5,则输出的结果为( )
A.12 B.20 C.24 D.45
5.有如下Python程序段
a=[1,1,2,2,3,3,4,4,5,5]
L=0
R=len(a)-1
while L<=R:
m=(L+R)//2
if a[m]>key:
R=m-1
else:
L=m+1
若key的值为3,执行该程序段后,R的值为( )
A.4 B.5 C.6 D.7
6.地图软件的驾车导航、步行导航、骑行导航等功能给我们的生活带来了极大的便利。用户在使用地图软件的驾车实时导航功能时,软件会实时获取我们的位置、车速、方向、时间等信息,将数据发送给服务器,服务器将获取到的信息进行分析处理,转换为车流量信息,判断交通的拥堵情况并返回给用户,以不同颜色来呈现拥堵情况。拥堵指数是根据车流量等数据计算而来的,具体如表n所示,用python描述不同拥堵情况tmp和呈现的颜色,下列选项正确的是( )
拥堵指数
含义
0~1.4
通畅(绿色)
1.5~1.9
缓行(黄色)
2.0~3.9
拥堵(红色)
4.0及以上
严重拥堵(深红色)
A.
if tmp>=4.0:
print("深红色")
elif tmp>=2.0:
print("红色")
elif tmp>=1.5:
print("黄色")
else:
print("绿色")
B.
if tmp>=4.0:
print("深红色")
if tmp>=2.0:
print("红色")
if tmp>=1.5:
print("黄色")
else:
print("绿色")
C.
if tmp>=0:
print("绿色")
elif tmp>=1.5:
print("黄色")
elif tmp>=2.0:
print("红色")
else:
print("深红色")
D.
if tmp>=0:
print("绿色")
if tmp>=1.5:
print("黄色")
if tmp>=2.0:
print("红色")
else:
print("深红色")
A.A B.B C.C D.D
7.在升序链表 a 中插入一个不重复数据data,仍保持链表的升序状态。使用 Python 程序实现插入操作,代码如下:
a=[[20,4],[6,3],[35,5],[18,0],[27,2],[59,-1]]
p=head=1
data=int(input())
if data<=a[head][0]:
a.append([data,head])
head=len(a)-1
else:
q=a[p][1]
while _____①______ and data>a[q][0]:
p=q
q=a[p][1]
________②__________
a.append([data,q])
则划线处的代码为( )
A.①p!=-1 ②a[p][1]=len(a)-1 B.①q!=-1 ②a[p][1]=len(a)
C.①q!=-1 ②a[q][1]=len(a)-1 D.①p!=-1 ②a[q][1]=len(a)
8.二分查找时,要求数据是有序的,但有时我们又想保持数据的原始顺序,那可以引入一个索引数组解决这个需求。例如,已知无序数组a(下标0到n-1),通过引入索引数组b(下标0到n-1),使得a[b[0]]≤a[b[1]]≤a[b[3]]……≤a[b[n-1]](示例如图所示),再对这些有序数据进行二分查找。
通过索引数组b,实现a[b[0]]≤a[b[1]]≤a[b[3]]……≤a[b[n-1]]功能的程序段如下,方框中应填入的正确代码为
b = [i for i in range (len(a))] # 索引数组b的初始值
for i in range(1, n):
for j in range(n - 1, i -1, -1):
print (b)
A.
if a[b[j]] < a[b[j-1]]:
b[j], b[j-1] = b[j-1], b[j]
B.
if a[b[j]] < a[b[j-1]]:
a[b[j]], a[b[j-1]] = a[b[j-1]], a[b[j]]
C.
if a[j] < a[j-1]:
a[j], a[j-1] = a[j-1], a[j]
D.
if b[j] < b[j-1]:
b[j], b[j-1] = b[j-1], b[j]
A.A B.B C.C D.D
9.已知某同学的BMI值存储在变量X中,小蓝编写程序判断该同学的身体状况信息,并保存到变量Y中,则下列程序段无法实现该功能的是( )
A.
Y = "偏瘦"
if X>=18:
Y = "正常"
elif X>24:
Y = "偏胖"
B.
Y="偏胖"
if X<18:
Y = "偏瘦"
elif X<=24:
Y = "正常"
C.
if X>24:
Y = "偏胖"
elif X>=18:
Y = "正常"
else:
Y = "偏瘦"
D.
if 18<=X<=24:
Y = "正常"
else:
Y = "偏瘦"
if X>18:
Y = "偏胖"
A.A B.B C.C D.D
10.某算法的部分流程图如图所示。执行这部分流程,若输入x的值为21,则输出s和k的值分别为( )
A.4,7 B.-5,11 C.4,9 D.-5,9
11.有如下Python程序段:
n=int(input())
a=[0,0,0,0,0,0,0,0,0,0]
c=0
while n>0:
a[n%10]=a[n%10]+1
if a[n%10]==1:
c=c+1
n=n//10
print(c)
执行上述程序段,若输出c的值为4,则输入n的值可能为( )
A.1123 B.2373 C.14551 D.20045
12.某算法的部分流程图如下图所示,执行这部分流程,依次输入整数-2,3,-1,2,0。则输出s的值是( )
A.-3 B.5 C.2 D.0
13.在信息传递的过程中,通常会将一些敏感信息进行加密,以下是实现加密功能的Python程序段。
mw=input("请输入明文:")
mm="";key=2
for ch in mw:
if"0"<=ch<="9";
mm=str((int(ch)+key)%10)+mm
else:
mm+=chi
print(mm)
若输入的明文为“Hi,2024”,则执行代码后的输出结果为( )
A.,6424iH B.6424Hi C.6424Hi, D.Hi,6424
14.小爱同学在jhyzoj上编写求1-n之间所有数和的程序如图a所示,本地调试报错信息如图b所示。
小爱同学求助编程大牛的你,她的程序代码运行到程序第( )行报错。
A.1 B.3 C.4 D.5
15.在Python中,以下赋值语句的说法错误的是( )
A.语句a , b=3表示将3同时赋值给变量a和b B.“=”表示将右边表达式的值赋给左边的变量
C.语句x,y =y,x可以实现变量x和y值的互换 D.c+= a等效于c=c+ a
16.下列程序的功能是求1~x之间所有5的倍数之和
x = int(input(″输入数字x:″)
i = 1
s = 0
while i <= x:
if ① :
s = s + i
print(i )
②
print("s=" , s)
则划线处应填入的语句是( )
A.① i%5 ==0 ②i = i + 1 B.① i//5 ==0 ② i = i + 1 C.① i%5 ==0 ②i = i + 2 D.① i%5 ==0 ② i = i + 5
17.有如下Python程序段:
import random
q=[0]*8;head,tail=0,4
for i in range(4):
k=random.randint(0,10)
if k%2==0:
q[tail]=k%5
tail+=1
else:
head+=1
while head<tail:
print(q[head],end="")
head+=1
程序执行后,输出的结果可能为:( )
A.0 0 0 0 2 3 0 9 B.0 0 0 0 C.0 1 2 3 4 D.2 3
二、填空题
18.函数一般包括函数名、参数、返回值和函数体等四部分。其中 和函数体是必不可少的。
19.从键盘输入圆的半径r,编程计算圆的面积s。
r=float(input("请输入圆的半径:"))
=3.14*r*r
print("圆的面积s=",s)
20.有如下Python 程序段:
k=[29,38,78,17]
m=0
for i in range(1, len(k)):
if k[i]>k[m]:
m=i
if m!=0:
k[0],k[m]=k[m],k[0]
print(k)
该程序段执行后,输出结果为 。
21.用Python表达式补充完成如下程序,统计四位奇数中满足能被23和19整除的总数。
s=0
for i in range(1001,10000,2):
:
s=s+1
print(s)
22.某 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时,程序输出结果是 。
三、判断题
23.Python是解释型语言,翻译一行就执行一行。( )
24.程序设计语言是指人们编制程序所使用的计算机语言,VB是低级语言。( )
25.Python语言的变量名要区分英文字母的大小写。( )
26.在程序中,x=y与y=x是不一样的。( )
四、操作题
27.寻找金蝉素数。素数是指大于1 的自然数中,除了1 和它本身以外不再有其他因数的自然数。金蝉素数是指由1、3、5、7、9 这5个奇数排列组成不重复的五位素数,它的中间三位数和最中间的一位数也都是素数的自然数,如“13597”是素数,“359”和“5”也是素数,则“13597”是金蝉素数。小乐编写一个Python 程序寻找金蝉素数,运行结果如图所示。
(1)下列选项中可以填入加框处的代码是 (多选,填字母)。
A.2,n B.2,n+1 C.2,int(math.sqrt(n))+1 D.2,n/2+1 E.2,n//2+1
(2)Python 程序代码如下,请在划线处填入合适的代码
import math
def isprime(n):
for i in range: if n%i==0:
break
else:
return True
①
cicada=[];c=0
for i in range(13579,99999,2):
a=[0]*10
temp=i
while temp!=0:
②
temp//=10
if a[1]+a[3]+a[5]+a[7]+a[9]==5:
x=i//100%10
y= ③
if isprime(x) and x!=1 and isprime(y) and isprime(i):
cicada.append(i)
④
print("金蝉素数有:",cicada)
print("共有:",c, "个")
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查Python基础。
在Python中,{0:f}可以将第一个参数格式化为默认精度的浮点数即6位小数,并保留小数点后面的数字。故正确为:选项C。
2.C
【详解】本题考查Python程序设计相关内容。A+B+C<D-->3+4-5<6-->2<6-->True,A>=3-->3>=3-->True,not C<0-->not -5<0-->not True-->False;D>0-->6>0-->True。A+B+C<D and A>=3 or not C<0 or D> 0-->True and True or False or True-->True。故本题答案是C选项。
3.C
【详解】本题考查Python程序设计相关内容。sum是求和函数,[1,2,3,4])是列表,sum([1,2,3,4])是计算列表各元素的和,即:10。故本题答案是C选项。
4.C
【详解】本题考查Python程序设计相关内容。分析程序段,当最后一次循环开始时,a=1×2×2×2=8,b=2×2×2×2=16,然后c=a+b=24,故本题答案为C选项。
5.B
【详解】本题考查Python程序执行与分析。L=0,R=9,第一次循环,m=(L+R)//2=4,不满足a[4]=3>key,L=m+1=5;第二次循环,m=(L+R)//2=7,满足a[7]=4>key,R=m-1=6;第三次循环,m=(L+R)//2=5,不满足a[5]=3>key,L=m+1=6;第四次循环,m=(L+R)//2=6,满足a[6]=4>key,R=m-1=5;第五次循环,不满足L<=R,循环结束。因此执行该程序段后,R的值为5。故选B。
6.A
【详解】本题考查Python程序设计相关内容。题目采用if...elif...else结构实现功能需求,分析四个选项:A选项,可以实现题目要求;B选项,tmp>=4.0或tmp>=2.0时,均输出“黄色”,不符合题意,存在逻辑错误。C选项,若tmp>=0不成立,意味着tmp<0,后面的部分均不会执行,不符合题意。D选项,若tmp>=2.0不成立,意味着tmp<2.0,执行print("深红色"),不符合题意。故本题答案是A选项。
7.B
【详解】本题考查Python程序设计相关内容。本题涉及到链表的插入相关知识。根据题意if条件是在链表头部插入数据;else是在链表中插入数据,p引入头指针,q指向头指针的后继节点,需要遍历整个链表,只需要遍历到最后一个节点即可,若在while条件中令p!=-1,那么逻辑就会出错,p指向尾结点时,q指向-1,data就会和尾结点的后继指针的数据比较。故应该是令q!=-1,q指向尾结点时,和data比较最后一次,然后q跳转到尾结点的后继指针上,遍历结束。执行插入的过程是①令p所直接点的后继指针指向data的位置即a[p][1]=len(a)-1,但是新节点是在最后加入的,所以a[p][1]=len(a);②构建新节点[data,q],即成功插入。故本题答案是B选项。
8.A
【详解】本题考查Python程序设计相关内容。题目采用冒泡排序的方法,若要保留其原始顺序,则在a[b[j]] < a[b[j-1]]成立时,将交换b[j], b[j-1] 可以实现,即: b[j], b[j-1] = b[j-1], b[j]。故本题答案是A选项。
9.A
【详解】本题考查的是Python分支语句。代入特殊的值,可以快速判断是否能实现算法要求的功能。
A选项,当x=25时,if x>18条件成立,elif不会被执行,会得到Y是正常,不符合要求。
B选项,把x=16,20,25,分别代入,会得到偏瘦,正常,偏胖的正确结果,正确。
C、D选项,同样把x=16,20,25,都能得到正确结果。综上,答案为A。
10.B
【详解】本题考查流程图分析。
根据题意执行过程如下表所示,则输出s和k的值分别为-5,11。
项目
x
s
k
初值
21
0
1
1
10
-1
3
2
5
2
5
3
2
-3
7
4
1
4
9
5
0
-5
11
故选择B。
11.D
【详解】本题考查Python程序设计相关内容。输入D选项,n=20045,n>0成立,进入循环:20045%10=5,a[5]=a[5]+1=0+1=1,a[5]==1成立,c=c+1=0+1=1,n=n//10=20045//10=2004;n>0成立,进入循环:2004%10=4,a[4]=a[4]+1=0+1=1,a[4]==1成立,c=c+1=1+1=2,n=n//10=2004//10=200;n>0成立,进入循环:200%10=0,a[0]=a[0]+1=0+1=1,a[0]==1成立,c=c+1=2+1=3,n=n//10=200//10=20;n>0成立,进入循环:20%10=0,a[0]=a[0]+1=1+1=2,a[0]==1不成立,n=n//10=20//10=2;n>0成立,进入循环:2%10=2,a[2]=a[2]+1=0+1=1,a[2]==1成立,c=c+1=3+1=4,n=n//10=2//10=0;n>0不成立,不再进入循环。此时,c=4,符合题目要求。输入ABC选项,C的值均为3,不符合题意。故本题答案是D选项。
12.B
【详解】本题考查算法流程图阅读理解能力。由流程图可知,a=0时,循环结束,s变量是正数累加的结果,所以最终s的值是5。故选B。
13.C
【详解】本题考查程序分析。语句(int(ch)+key)%10的功能是把数字ch循环右移2位,即如果ch=0,循环右移2位结果是2,若ch=4,右移结果是6,若ch=2,右移结果是4。mm=str((int(ch)+key)%10)+mm的功能是把右移2位的结果逆序保存到mm中,如果ch不是数字,则按照顺序保存到mm中。故选C。
14.B
【详解】本题考查的是Python程序调试运行。由图a可知,错误是因为i再之前没有赋值,导致错误。故她的程序代码运行到程序第3行报错。选B。
15.A
【详解】本题考查Python赋值语句。在Python中,语句a,b=3并不会将3同时赋值给变量a和b。这种语法是错误的,实际运行时会引发ValueError,因为左侧有两个变量,右侧只有一个值,无法解包。正确的做法是分别给每个变量赋值,例如a=3和b=3,或者用a,b=3,3。故答案为:A。
16.A
【详解】本题考查的是Python选择和循环语句应用。第一空判断i是不是5的倍数,填i%5==0;求1~x之间所有5的倍效之和,每次i递增1,第二空填i=i+1,故本题选A选项。
17.B
【详解】本题考查Python程序的分析。k=random. randint (0, 10),k随机生成0~10, 由q[tail]=k%5可知,q列表中不可能出现9,排除A选项;for循环一共循环4次,若q中有1、2、3、4,说明没有执行head+=1,则C应是00001234,排除C选项;如果k是连续生成0或10两个再生成两个奇数,选项B可能;选项D有2、3,则说明head+=1至多执行2次,因此输出结果一定有0,排除D选项。故正确答案选B。
18.函数名
【详解】本题考查函数相关内容。用户自定义函数是用户自己写的一段程序,一般包括函数名、参数、返回值、函数体等四部分,其中,函数名和参数是必不可少的部分。故本题答案是:函数名。
19.s
【详解】本题考查Python程序。在计算圆的面积时,需要先定义一个变量来存储计算结果。这里用变量s来表示圆的面积,根据圆的面积公式s=3.14*r*r,将计算结果存储在s中,然后通过print函数输出。故答案为:s。
20.[78,38,29,17]
【详解】本题考查Python程序设计相关内容。分析程序段,其功能是先找出列表元素最大值,然后将其与列表首元素交换位置。列表k中,最大值是78,将其与29交换位置,形成新列表[78,38,29,17]。故本题答案是:[78,38,29,17]。
21.if i %23==0 and i %19 ==0
【详解】本题考查的是Python循环与选择语句。通过循环变量i遍历所有四位数的奇数,判断能否被23和19整除,只要看除完后的余数是否为0,故画线处代码为:if i %23 == 0 and i %19== 0。
22.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。
23.正确
【详解】本题考查Python语言基础知识。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python程序当运行时,它会逐行执行每个代码行。故本题答案是:正确。
24.错误
【详解】本题考查的是程序设计语言。程序设计语言是指人们编制程序所使用的计算机语言,VB是高级语言。题干中说法错误。
25.正确
【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。
26.正确
【详解】本题考查程序设计中赋值语句的理解。在Python程序中,x=y是将y的值赋给x,y=x是将x的值赋给y,因此,x=y与y=x是不一样的。故正确。
27. ACE return False a[temp%10]=1 i//10%1000 或i%10000//10 c+=1 或c=len(cicada)
【详解】本题考查的是Python综合应用。
(1)isprime(n)函数用于判断n是否是素数,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)。由于判断n是否是素数的过程中具有对称性,因此此处可以填2,n,或2,int(math.sqrt(n))+1,或2,n//2+1,故选ACE选项。
(2)①处,如果找到一个因数,跳出循环,同时返回False表示不是素数,故此处应为:return False;②处,由if判断语句“if a[1]+a[3]+a[5]+a[7]+a[9]==5”可知此处将temp各个位的数字保存到列表a中,并赋值为1,故此处填a[temp%10]=1;③处,x取i的最中间的一位数,y取i的中间三位数,故此处填i//10%1000 或 i%10000//10;④处,如果找到金蝉素数,则追加到cicada列表中,并统计个数c,故此处应为:c+=1,cicada列表中存储的是金蝉素数,故也可以为:c=len(cicada)。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$