第四章 程序设计基础 练习(含答案)2023—-2024学年高中信息技术粤教版(2019)必修1

资源下载
  1. 二一教育资源

第四章 程序设计基础 练习(含答案)2023—-2024学年高中信息技术粤教版(2019)必修1

资源简介

第四章 程序设计基础 练习
一、选择题
1.下列Python表达式的值为数值5的是( )
A.int(max(["36","100","5"])) B.len([1,2,3,"IT"])
C.ord("e")-ord("a") D.str(abs(-5))
2.有如下Python程序段:
x,y=11,6
if x%2!=0:
if y%3==0:
s=x*y
else:
s=x//y
else:
s=x+y
程序执行后,s的值为( )
A.66 B.17 C.1 D.报错
3.某店铺优惠活动:消费满688后打7折,不满额则9折。计算优惠价格的Python程序段如下:
if x>=688:
y=x*0.7
else:
y=x*0.9
下列选项中与上述功能相同的是( )
A. B. C. D.
4.已知字典 medals={"金牌":201,"银牌":111,"铜牌":71},其中键是奖牌,值是数量,则引用"金牌"数量的方法是( )
A.medals ["金牌"] B.medals ("金牌") C.medals [0] D.medals (1)
5.有如下Python程序段:
n=int(input())
to_hex=['A','B','C','D','E','F']
if n<10:
res=n
else:
res=to_hex[n%10]
输入n的值为12,程序执行后,res的值为( )
A.F B.E C.D D.C
6.下列Python语句不正确的是( )
A.numbers=[1,2,3,4] B.a,b=b,a
C.x,y,z="AI",[5,1] D.n%=2
7.Python表达式3*7**2//10的值是( )
A.4 B.14 C.7 D.47
8.有如下Python程序段:
import random
a=[0]*6
i=0
while i<6:
a[i]=random.randint(1,5)*2
if a[i]==i*2:
a[i]=0
i+=1
elif a[i]%2==i%2:
a[i]=a[i]-1
i+=1
print(a)
执行该程序后,输出的结果可能是( )
A.[11,0,3,0,0,0] B.[0,0,1,0,3,0]
C.[1,0,5,0,4,0] D.[3,0,5,0,5,0]
9.有如下Python程序段:
a=[[1,1],[2,2],[3,3],[4,-1]]
head=0
cur=a[head][1]
a[head][1]=-1
while cur!=-1:
p=a[cur][1]
a[cur][1]=head
head,cur=cur,p
则程序运行后,a的值为( )
A.[[1,1],[2,2],[3,3],[4,-1]] B.[[1,-1],[2,0],[3,1],[4,2]]
C.[[4,1],[3,2],[2,3],[1,-1]] D.[[4,-1],[3,0],[2,1],[1,2]]
10.有如下Python程序:
import random
a=[2,4,5,6,6,6,8,8,10,12]
key=int(random.random()*5+5)
i=0;j=9;s=0
while i<=j:
m=(i+j)//2
if a[m]<=key:
i=m+1
else:
j=m-1
s+=m
程序运行后,s的值不可能是( )
A.10 B.14 C.19 D.22
11.数组a中存储着全校学生的学号和BMI信息,格式为 [[“0101”,19.2], [“0102”,18.5], [“0103”,20.1],……]。其中每条数据的第一项为学号,第二项为BMI值。数组a已经按学号升序排序,现要求按照BMI值进行降序排序,BMI相同的情况下仍然按照学号保持升序。则下列程序段可以实现该功能的是( )
A. B.
C. D.
A.A B.B C.C D.D
12.定义如下函数:
def move(n,a,b,c):
if n==1:
print(a,”->”,c)
return
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
执行语句move(3,”A”, ”B”, ”C”),输出的第一行内容是( )
A.B->C B.A->C C.C->A D.A->B
13.在二维数组 a 中,a[3][1]表示的是第几行第几列的数据( )
A.第1行3列 B.第3行1列
C.第4行2列 D.第2行4列
14.数据类型可以分为( )
A.基本数据类型和原子数据类型 B.基本数据类型和结构数据类型
C.原子数据类型和编程数据类型 D.应用数据类型和结构数据类型
15.有如下Python程序段:
s="cbcbaabcbbc"
st=s[0]
for i in range(1, len(s)):
if len(st)==0 or s[i]!=st[-1]:
st=s[i]+st
else:
st=st[0:len(st)-1]
print(st)
执行该段代码后,输出结果为( )
A.cbbc B.cbc C.bc D.b
16.有如下Python程序段:
from random import randint
a=[0]*6
i=0
while i<6:
a[i]=randint(1,10)
if a[i]%2==i%2:
i=i-1
elif a[i]%2==0:
a[i]=a[i]+1
i=i+1
执行该段代码后,列表a的值不可能为( )
A.[5,3,1,11,9,3] B.[11,5,5,7,3,5] C.[1,3,9,11,1,11] D.[9,7,7,5,9,3]
17.有如下Python程序段:
a=[3,5,2,4,1]
sum1=m=a[0]
for i in range(1,len(a)):
if a[i]m=a[i]
suml+=m
执行该程序后,sum1的值为( )
A.6 B.9 C.11 D.15
18.“回文串”是一个正读和反读都一样的字符串。下列Python段的功能是:输入一个字符串,判断该字符串是否为回文串,若是则输出“Yes”,否则输出“No”。
s=input("请输入字符串:")
i=0
j=len(s)-1
flag=True
while iif s[i]==s[j]:
i+=1

else:
flag=False
if ② :
print("Yes")
else:
print("No")
则程序划线①②③处应填入的语句为( )
A.①j+=1 ②flag B.①j+=1 ②not flag
C.①j-=1 ②flag D.①j-=1 ②not flag
19.根据国家标准,室内空气质量指数的正常范围为0.5~2.5,如果空气质量指数大于2.5,则表明空气质量较差,空气质量指数小于0.5,表明空气质量较好,下列选项能正确表示这三种情况的是( )
A.if zs>2.5: print("较差") elif 0.5zs>0.5: print("正常") elif zs<0.5: print("较好") else: print("较差") C.if zs>2.5: print("较差") elif not zs>0.5: print("较好") else: print("正常") D.if zs<0.5: print("较好") elif not zs>2.5: print("正常") elif zs>2.5: print("较差")
A.A B.B C.C D.D
20.某DataFrame对象df共包含6个数据列、30个数据行,其中第2列为“姓名”列,下列语句中能读取df对象中“姓名”列所有数据的是( )
A.df."姓名" B.df. columns[1] C.df[姓名] D.df["姓名"]
二、填空题
21.若输入987421,输出的结果是 。
n = int(input("n=")) n = n % 1000 n = n // 100 print (n)
22.x = 20
if x = 10:
value = 4*x
else:
value = 5*x
print(value)
本程序中分数变量,变量名称是 ,变量的数据类型是
23.阅读如下一段程序,回答以下问题。
x=20
if x>=10:
value=4*x
else:
value=5*x
print(value)
该程序采用 结构,程序输出结果是
24.把数式写成Python语言的表达式 。
25.Python表达式5<-5 or not 5<=5 and 5!=5的值是 。
三、判断题
26.在Python语言中,4和"4"的数据类型是一样的。( )
27.“student id”是一个正确的变量名。( )
28.Python程序 a=10;a=8;print(a)的运行结果是8。( )
29.在Python中,运算符*=的优先级要高于运算符+=。( )
30.实现控制循环的跳转需要用到break和continue两个关键字。其中,break是中断循环,continue是跳出本次循环的执行。( )
四、操作题
31.小光和小明根据某地机动车限行提示,如下图a所示,分别设计了根据尾号数字实现限行提醒的程序(程序A和程序B)。目前设计进度只能判断车牌的最后一位是数字的情况,如输入车牌号码“沪AGU332”,输出“星期一限行”,如下图b所示。

图a 图b
程序编写如下,请回答下列问题
程序A 程序B
(1)请在划线处填入合适代码,程序A中的①②和程序B中①②填入代码是一样的,填一处即可:
① 、② 。
(2)在上述程序中,变量lic的数据类型为 (单选,填字母:A.整型/B.字符串/C.逻辑型)
(3)程序A和程序B哪段程序效率高 (单选,填字母:A.程序A/B.程序B)
(4)调试程序时出现1处报错,如下图所示
如何修正程序为
32.某国计划在海岸线上安装雷达探测海上的岛屿。假设海岸线是一条无限的直线,一边是陆地,另一边是海洋。为了找到覆盖所有岛屿所需雷达装置的最小数量,编写程序:输入岛屿数量n、雷达装置的覆盖距离d以及每个岛屿的位置(由x,y坐标值表示),若雷达能覆盖所有岛屿,则输出所需雷达的最小数量;否则,输出“无法覆盖”。
如图所示海洋中有3个岛屿,位置分别为(1,2)、(-3,1)、(2,1),雷达的覆盖距离为2,则至少需要安装2个雷达装置,分别安装在(-2,0),(1,0)位置上。
(1)若上述雷达覆盖距离修改为3,则至少需要安装的雷达装置数为
(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。
from math import sqrt
n = int(input('请输入岛屿的数量n:'))
d = int(input('请输入雷达的半径d:'))
# qj[i][0]、qj[i][1]分别存储可以覆盖第i个岛屿的雷达,能安装的最左边和最右边位置
qj = [[0, 0] for i in range(n)]
flag = True
for i in range(n):
x = int(input('岛屿坐标x:'))
y = int(input('岛屿坐标y:'))
if y > d:
flag = False
break
qj[i][0] =
qj[i][1] = x + sqrt(d * d - y * y)
if :
print('无法覆盖')
else:
# 按左端点升序排序,左端点相同时按右端点升序排序
for i in range(n - 1):
k = i
for j in range(i + 1, n):
if :
k = j
if k != i:
qj[k], qj[i] = qj[i], qj[k]
num = 1
cur = qj[0][1]
for i in range(1, n):
if cur > qj[i][1]:
cur = qj[i][1]
elif :
num += 1
cur = qj[i][1]
print('安装的雷达数为:', num)
(3)若将程序中加框处代码修改为 (单选:填字母),不影响的正确性。
A.i==n-1 B.i==n C.i < n D.y > d
(4)根据代码可知,对于n个岛屿,在进行排序时最多的交换次数为 。
33.如下自定义函数实现一个加减法算式的运算,要求输入一个只包含运算符“+”和运算符“-”的合法算式,输出算式的运算结果。具体程序如下,请在划线处填入合适的代码。
def fun(s):
num1=i=0
while iif s[i]>="0" and s[i]<= "9":
num1=
i+=1
elif s[i]== "+" or s[i]<= "-":
x=1
if s[i]== "-":
x=-1
num2=0;j=i+1
while jif s[j]>= "0" and s[j]<= "9":
num2=mum2*10+int(s[j])
j+=1
elif s[j]== "+"or s[j]== "-":
return fun(str(num1+x*num2)+ )
if j==len(s):
return
34.在一个正整数序列中,由若干个连续的数据元素组成的序列,称为该序列的子序列。现输入一个整数序列和一个整数m,寻找一个满足下列条件的子序列:
①该子序列的各元素之和不能超过m。
②在所有满足条件①的子序列中寻找长度为最大(元素个数最多)的子序列。
若满足条件的子序列有多个,则输出最左边的子序列。
例如,整数序列为“1,5,4,2,3,1,5,8,1”,m的值为15,则元素之和不超过m的最长子序列有“[1,5,4,2,3]”和“[4,2,3,1,5]”,长度均为5,根据题目要求可知,最后输出的最长子序列为“[1,5,4,2,3]”。读入一个由整数组成的数据序列,输入m,输出符合条件的最长子序列及该子序列的长度。程序运行界面如图所示。
请回答下列问题:
(1)若原序列为“3,5,4,5,2,3,1,8,3,4”,m=20,则输出的最长子序列为 。
(2)函数sumif(b)的功能是求列表b中元素的前缀和,即sumx[1]=b[0],sumx[i]=b[0]+…+b[i-1],请在程序划线处填入合适的代码。
def sumif(b):
sumx[0]=0
for i in range(1,n+1):
sumx[i]=
return sumx
(3)主程序如下,请在程序划线处填入合适的代码。
#读入数据,并存入列表d中,代码略
print("序列为:", d)
n=len(d)
m=int(input("请输入m的值:"))
sumx=[0]*(n+1)
sumx=sumif(d)
maxn=0
maxposi=-1
for i in range(0,n+1):
j=i
while :
j=j+1
if j-i-1>maxn:
maxposi=i
print("最长子序列长度为:", maxn)
print("最长子序列为:",d[maxposi:maxn+maxposi])
五、简答题
35.列举Python程序设计语言中,for循环和while循环的基本的格式。
36.什么是常量,什么是变量?常量和变量的特点是什么?
37.从键盘上输入一个字符,当输入的是英文字母时,输出“输入的是英文字母”;当输入的是数字时,输出“输入的数字”;当输入的是其他字符时,输出“输入的是其他字符”。
参考答案
1.A
2.A
3.D
4.A
5.D
6.C
7.B
8.D
9.B
10.B
11.D
12.B
13.C
14.B
15.D
16.B
17.C
18.C
19.D
20.D
21.4
22.value int
23.分支 80
24.(a+b)/(2*a)
25.False
26.错误
27.错误
28.正确
29.错误
30.正确
31.lic[-1]或其他适合答案 ["5","0"] B A 将最后一个print语句采用缩进格式书写或其他适合答案。
32.1 x -sqrt(d * d - y * y) qj[k][0]>qj[j][0] or qj[k][0]==qj[j][0] and qj[k][1]>qj[j][1] cur33.num1*10+int(s[i]) s[j:] num1+num2*x
34.[5,4,5,2,3,1]或5,4,5,2,3,1 或545231 sumx[i-1]+b[i-1] j<=n and sumx[j]-sumx[i]<=m (说明:不能写为sumx[j]-sumx[i]<=m and j<=n) maxn=j-i-1
35.for 循环结构的基本格式:
for 循环变量 in 列表:
语句或语句组
While循环格式:
While(表达式):
语句或者语句组
36.常量是指在程序运行过程中其值始终不发生变化的量,通常是固定的数值或字符串。变量是指在程序运行过程中其值可以发生变化的量。常量是固定值,变量可以多次赋值。
37.ch=input("请输入一个字符:")
if ch.isdigit()==True:
print("输入的是数字")
elif ch.isalpha()==True:
print("输入的是英文字母")
else:
print("输入的是其他字符")

展开更多......

收起↑

资源预览