高中信息技术学业水平考试综合复习粤教版 第四章 程序设计基础.docx
《高中信息技术学业水平考试综合复习粤教版 第四章 程序设计基础.docx》由会员分享,可在线阅读,更多相关《高中信息技术学业水平考试综合复习粤教版 第四章 程序设计基础.docx(17页珍藏版)》请在冰豆网上搜索。
高中信息技术学业水平考试综合复习粤教版第四章程序设计基础
必修1数据与计算
第四章程序设计基础
4.1程序设计语言的基础知识
4.1.1Python的常量和变量
常量:
常量是指在程序运行过程中其值始终不发生变化的量,通常是固定的数值或字符串,在程序中可以直接使用。
变量:
变量是指在程序运行过程中其值可以发生变化的量,变量由变量的标识符(变量名)和变量的内容(赋值)两部分组成。
变量的命名:
标识符由字母(A-Z,a-z)、数字(0-9)、下划线(_)组成。
注意:
第一个字符必须是字母或下划线,不能是数字,如a1、_a;同时,字母区分大小写,如X和x、sum和Sum都是不同的标识符。
变量的赋值:
x=3表示将“=”右边的值赋给左边的变量。
4.1.2Python的数据类型
(1)Python支持以下三种不同的数值类型:
整型(int):
通常被称为整型或整数,是不带小数的数。
浮点型(float):
浮点型由整数部分与小数部分组成,如2.5。
复数(complex):
复数由实数部分和虚数部分构成,可以用a+bj或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。
(2)String(字符串):
字符串是以单引号或双引号括起来的文本,如‘abc’、"xyz"等。
字符串的索引从0开始,-1为从末尾开始的位置。
索引号写在方括号[]里,以确定数据位置。
(3)List(列表):
列表是写在方括号“[]”之间、用逗号分隔开的元素列表,列表的数据项不需要具有相同的类型。
与字符串的索引一样,列表索引从0开始。
(4)Tuple(元组):
元组与列表相似,在Python中,写在小括号()之间,并用逗号来分隔元素的就是元组。
例如tuple1=(200,50)。
注意:
元组的元素不能修改。
(5)Sets(集合):
集合是一个无序不重复元素的序列,基本功能是进行成员关系测试和删除重复元素。
可以使用大括号{}或者set()函数创建集合。
(6)Dictionary(字典):
字典是无序的对象集合,用{}标识,它是一个无序的“键(key):
值(value)”对集合,在同一个字典中,键必须是唯一的。
4.1.3Python的运算符与表达式
(1)算术运算符与算术表达式
算术运算符
含义
例子
结果
+
加
5+2
7
-
减
5-2
3
*
乘
5*2
10
/
除
5/2
2.5
//
整除
5//2
2
%
求余
5%2
1
**
幂运算
5**2
25
(2)逻辑运算符与逻辑表达式
逻辑运算符
逻辑表达式
描述
示例(a=0;b=1;c=2)
and
xandy
x为false,则返回false,否则返回y的计算值
(aandb)返回0
(candb)返回1
or
xory
x为true,则返回x的值,否则返回y的计算值
(aorb)返回1
(corb)返回2
not
notx
x为true返回false;x为false返回true
not(aandb)返回true
(3)关系运算符与关系表达式
由关系运算符连接而成的表达式称为关系表达式。
关系表达式的值:
True、False,对应整数1和0。
关系运算符
含义
示例
结果
>
大于
4>3
true
>=
大于等于
3>=3
true
<
小于
4<3
false
<=
小于等于
4<=3
true
==
等于
4==3
fasle
!
=
不等于
4!
=3
true
(4)赋值运算符与赋值表达式
对变量的赋值通过赋值运算符“=”来完成。
赋值号不是等号,具有方向性,由右边赋给左边的变量。
除了“=”外,还有以下赋值运算符。
赋值运算符
含义
示例
=
直接赋值
x=y
+=
加法赋值
x+=y
相当于x=x+y
-=
减法赋值
x-=y
相当于x=x-y
*=
乘法赋值
x*=y
相当于x=x*y
/=
除法赋值
x/=y
相当于x=x/y
//=
整除赋值
x//=y
相当于x=x//y
%=
求余赋值
x%=y
相当于x=x%y
**=
指数幂赋值
x**=y
相当于x=x**y
(5)成员运算符
Python中用成员运算符判断序列中是否有某个成员。
成员运算符
描述
示例
in
xiny,如果x是序列y的成员,则计算结果为true,否则为false
3in[1,2,3,4]结果为true
5in[1,2,3,4]结果为false
notin
xnotiny,如果x不是序列y的成员,则计算结果为true,否则为false
3notin[1,2,3,4]结果为false
5notin[1,2,3,4]结果为true
(6)
运算符的优先级
当一个表达式中有多种运算时,运算的顺序是根据运算符的优先级由高到低进行运算。
同级运算则按从左到右的顺序进行。
4.1.4Python的函数
4.2顺序结构
4.2.1数据的输入
格式:
<变量>=input(‘提示信息:
’)
input()函数的返回结果都是字符串,如果需要可将其转换为相应的类型再处理。
4.2.2数据的输出
格式:
print(object)
object是要输出的对象,可以是常量,变量或表达式
4.2.3顺序结构的应用
顺序结构是最常用、最简单的程序结构,其语句执行顺序是自上而下依次执行的。
4.3选择结构
4.3.1单分支if语句
格式:
if(条件表达式):
语句A
注意条件表达式后面有冒号,语句A要有缩进,语句A
如果是多个语句组成的复合语句时,所有语句严格遵循
相同的缩进。
4.3.2双分支if语句
格式:
if(条件表达式):
语句A
else:
语句B
注意:
条件表达式后面有冒号,语句A要有缩进,语句A和语句B如果是多个语句组成的复合语句时,所有语句严格遵循相同的缩进。
4.3.3多分支if...elif...else语句
格式:
if(表达式1):
语句1
elif:
(表达式2):
语句2
......
elif:
(表达式N):
语句N
else:
语句N+1
4.4循环结构
4.4.1for循环语句
格式:
for循环变量in列表:
语句或语句组
1.直接罗列的方式举例:
forvaluein[1,2,3,4,5]:
2.使用range()函数
range(start,stop,step)
计数从start开始(如果省略默认是0)
到stop结束(但不包括stop),
step表示步长,即间隔,(如果省略默认为1),step也可以是负数。
4.4.2while循环语句
格式:
while(表达式):
语句或语句组
while也叫当型循环,表达式是一个关系表达式或逻辑表达式,值为真(True)或假(False)whlie循环的循环体中必须有改变条件表达式值的语句,否则将成为死循环。
4.4.3循环嵌套
循环嵌套指的是某一种循环语句中包含着自身或其他循环语句,for循环或while循环之间可以相互嵌套。
第四章程序设计基础学业测试
一、单选题
1.在Python中,元素是无序不重复的是()。
A.列表B.元组C.集合D.字符串
【答案】:
C
【解析】:
见教材P69,集合是一个无序不重复元素的序列。
2.在以下运算符中,优先级最低的运算符是()。
A.*B.!
=C.+D.=
【答案】:
D
【解析】:
见P71表4-7运算符的优先级,指数→乘除→算术→关系→赋值→标识→成员→逻辑。
3.有以下程序段:
sum=1
foriinrange(1,5):
sum=sum*i
print(sum,i)
程序的运行结果为()。
A.245B.1205C.244D.1204
【答案】:
C
【解析】:
见教材P86可知,range(1,5)是生成一个1-4的整数,不包括5,所以本题为计算4的阶乘,结果为C。
4.在程序设计中,数据的()是最基本的操作之一。
A.输入B.输出C.输入输出D.计算
【答案】:
C
【解析】:
见教材P73原文:
数据的输入输出是最基本的操作之一。
5.在Python语言中,数据的输入是通过()来实现的。
A.input()函数B.print()函数C.output()函数D.abs()函数
【答案】:
A
【解析】:
见教材P73原文,input()函数实现数据输入。
6.在Python语言中,数据的输出是通过()来实现的。
A.input()函数B.print()函数C.output()函数D.abs()函数
【答案】:
B
【解析】:
见教材P74原文,print()函数实现数据输入。
7.顺序控制结构的程序执行过程是()依次执行的。
A.自上而下B.自下而上C.自外到内D.由内到外
【答案】:
A
【解析】:
见教材P74原文,顺序结构的程序是自上而下依次执行的。
8.input()函数的返回结果是()。
A.数值型B.集合C.列表D.字符串
【答案】:
D
【解析】:
见教材P73原文,input()函数的返回结果都是字符串。
9.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为()。
A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算
C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算
【答案】:
B
【解析】:
见P71表4-7运算符的优先级,算术→关系→赋值。
10.请判断如下程序的运行结果是将三个数()。
print(”请输入3个数:
")
x=int(input("x=”))
y=int(input("y="))
z=int(input("z="))
temp=0
ifx>y:
temp=y
y=x
x=temp
ifx>z:
temp=z
z=x
x=temp
ify>z:
temp=z
z=y
y=temp
print("这3个数新序列是:
",x,y,z)
A.从小到大排序B.从大到小排序
C.都变成最大的数D.都变成最小的数
【答案】:
A
【解析】:
该程序第一个if使x<=y,第二个if使x<=z,第三个if使y<=z,最后x<=y<=z,所以选A。
11.在Python语言中,通过关键字()来定义函数。
A.defB.functionC.funD.procedure
【答案】:
A
【解析】:
见教材P94页拓展,函数的定义与调用可知,Python采用def定义函数。
12.在Python语言中,求数组长度用()函数。
A.sizeB.lenC.lengthD.str
【答案】:
B
【解析】:
见教材P71,数组长度用len()函数求解。
13.在Python语言中,如果a是一个长度为10的数组,请问a[-1]()。
A.表示数组a的第1个元素B.表示数组a的第9个元素
C.表示数组a的最后1个元素D.会发生下标越界,出现错误
【答案】:
C
【解析】:
见教材P68,数组的下标索引同字符串,从左至右0开始,从右以-1开始。
14.在Python语言中,如果a是一个整数,请问以下表达式恒为False的是()。
A.a%5==0B.a>3anda<4C.a>3ora<3D.a==True
【答案】:
B
【解析】:
A项%为求余数函数,a整除5时为True,不能整除5时为False,不能恒为False;B项a为整数既大于3又小于4,是不可能存在的,所以恒为False;C项是有可能为真的;D项非0整数都为真。
15.在Python语言中,如果a是一个集合,以下哪个语句可以添加一个元素?
()
A.a.append
(1)B.a.extend
(1)C.a[1]=3D.a.add
(1)
【答案】:
D
【解析】:
给数组添加元素的方法是append,给集合添加元素的方法是add,即a.add(元素值)。
二、思考题
16.编写函数,接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数。
如果存在多组符合条件的素数,则全部输出。
【答案】:
importmath
defIsPrime(n):
#判断是否为素数
flag=True
foriinrange(2,int(math.sqrt(n))+1):
ifn%i==0:
flag=False
break
returnflag
defdemo(n):
ifn>0andn%2==0:
#判断n为大于0的偶数
#利用二分法找出小于n/2的素数
foriinrange(3,int(n/2)+1):
ifIsPrime(i)andIsPrime(n-i):
print(n,'=',i,'+',n-i)
else:
print("输入数据不符合要求,请输入正偶数!
")
a=int(input("请输入一个正偶数:
"))
demo(a)
【解析】:
见答案程序。
运行结果示例:
请输入一个正偶数:
36
36=5+31
36=7+29
36=13+23
36=17+19
17.反向输出一个三位数。
将一个三位数反向输出,例如输入358,反向输出853。
输入:
一个三位数n;输出:
反向输出n
样例输入:
100,样例输出:
001
请问如何保证输出结果中001前面的“0”不丢失?
请编程序解决此问题。
【答案】:
n=int(input("请输入一个三位整数:
"))
x=n%10#取出个位数
y=(int(n/10))%10#取出十位数
z=int(n/100)#取出百位数
print("n的反向输入结果为:
",x*100+y*10+z)
【解析】:
见答案
三、情境题
18.选手得分问题。
学校要举行辩论赛,请写一个程序计算选手的最终得分,计算规则为去掉最高分和最低分,然后计算平均分。
分行完成输入多个评委的打分。
输入的分数保证是0~100之间的整数。
例如:
输入:
6(6个评委,以下6个数分别是6个评委的评分)
92
88
98
65
76
82
输出:
84.5(选手的最终得分)
【答案】:
fromnumpyimport*
print('请先输入评委人数,再依次输入评委的分数,分数为0~100的整数。
')
n=int(input('输入评委人数:
'))
score_all=[]
foriinrange(1,n+1):
score=int(input('评分:
'))
score_all.append(score)
average=(sum(score_all)-max(score_all)-min(score_all))/(n-2)
print('选手的平均得分为:
','%.2f'%average)
【解析】:
见答案
19.苹果和虫子问题。
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。
虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
输入:
输入仅三行,包括n,x和y(均为整数)
输出:
输出也仅一行,剩下的苹果个数
样例输入:
10
4
9
样例输出:
7
【答案】:
n=int(input("请输入苹果数n:
"))
x=int(input("请输入多少小时能吃掉一个苹果的值x:
"))
y=int(input("经过的总时间y:
"))
t=y//x
n=n-t
ify!
=x*t:
n=n-1
else:
n=n
print("剩余苹果数:
",n)
【解析】:
见答案
20.百钱买百鸡问题。
百钱买百鸡问题记载于中国古代5-6世纪成书的《张邱建算经》中的一道经典不定方程组的问题,其重要之处在于开创“一问多答”的先例,这是过去中国古算书中所没有的。
其问题是这样的:
今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。
凡百钱买鸡百只,问鸡翁、母、雏各几何?
请编程求解这个问题。
提示:
利用循环结构进行问题求解,其中三种鸡数量x,y,z同时符合如下两个条件:
x+y+z=100,5x+3y+z/3=100。
【答案】:
forxinrange(1,21):
foryinrange(1,34):
forzinrange(1,101):
ifx+y+z==100and5*x+3*y+z/3==100:
print('鸡公、鸡母、小鸡的数量分别为:
',x,y,z)
【解析】:
见答案