必修1 数据与计算
第四章 程序设计基础
4.1 程序设计语言的基础知识
4.1.1 Python的常量和变量
常量:常量是指在程序运行过程中其值始终不发生变化的量,通常是固定的数值或字符串,在程序中可以直接使用。
变量:变量是指在程序运行过程中其值可以发生变化的量,变量由变量的标识符(变量名)和变量的内容(赋值)两部分组成。
变量的命名:标识符由字母(A-Z,a-z)、数字(0-9)、下划线( _ )组成。 注意:第一个字符必须是字母或下划线,不能是数字,如a1、_a;同时,字母区分大小写,如X和x、sum和Sum都是不同的标识符。
变量的赋值:x=3表示将“=”右边的值赋给左边的变量。
4.1.2 Python的数据类型
(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.3 Python的运算符与表达式
(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 x and y x为false,则返回false,否则返回y的计算值 (a and b)返回0 (c and b)返回1
or x or y x为true,则返回x的值,否则返回y的计算值 (a or b)返回1 (c or b)返回2
not not x x为true返回false; x为false返回true not(a and b)返回true
关系运算符与关系表达式
由关系运算符连接而成的表达式称为关系表达式。关系表达式的值:True、False,对应整数1和0。
关系运算符 含义 示例 结果
> 大于 4>3 true
>= 大于等于 3>=3 true
< 小于 4<3 false
<= 小于等于 4<=3 true
== 等于 4==3 fasle
!= 不等于 4!=3 true
赋值运算符与赋值表达式
对变量的赋值通过赋值运算符“=”来完成。赋值号不是等号,具有方向性,由右边赋给左边的变量。除了“=”外,还有以下赋值运算符。
赋值运算符 含义 示例
= 直接赋值 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
成员运算符
Python中用成员运算符判断序列中是否有某个成员。
成员运算符 描述 示例
in x in y,如果x是序列y的成员,则计算结果为true,否则为false 3 in[1,2,3,4]结果为true 5 in[1,2,3,4]结果为false
not in x not in y,如果x不是序列y的成员,则计算结果为true,否则为false 3 not in[1,2,3,4]结果为false 5 not in[1,2,3,4]结果为true
运算符的优先级
当一个表达式中有多种运算时,运算的顺序是根据运算符的优先级由高到低进行运算。同级运算则按从左到右的顺序进行。
4.1.4 Python的函数
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.1 for循环语句
格式:for 循环变量 in 列表:
语句或语句组
1.直接罗列的方式举例:
for value in [1,2,3,4,5]:
2.使用range( )函数
range(start,stop,step)
计数从start开始(如果省略默认是0)
到stop结束(但不包括stop),
step表示步长,即间隔,(如果省略默认为1),step也可以是负数。
4.4.2 while循环语句
格式: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
for i in range(1,5):
sum=sum*i
print(sum,i)
程序的运行结果为( )。
A.24 5 B.120 5 C.24 4 D.120 4
【答案】: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
if x>y:
temp=y
y=x
x=temp
if x>z:
temp=z
z=x
x=temp
if y>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. def B.function C. fun D.procedure
【答案】:A
【解析】:见教材P94页拓展,函数的定义与调用可知,Python采用def定义函数。
12.在Python 语言中,求数组长度用( )函数。
A.size B. len C. length D.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==0 B. a>3 and a<4 C. a>3 or a<3 D.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]=3 D.a.add(1)
【答案】:D
【解析】:给数组添加元素的方法是append,给集合添加元素的方法是add,即a.add(元素值)。
二、思考题
16.编写函数,接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。
【答案】:
import math
def IsPrime(n): #判断是否为素数
flag=True
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
flag=False
break
return flag
def demo(n):
if n>0 and n%2==0: #判断n为大于0的偶数
#利用二分法找出小于n/2的素数
for i in range(3,int(n/2)+1):
if IsPrime(i) and IsPrime(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(选手的最终得分)
【答案】:
from numpy import *
print('请先输入评委人数,再依次输入评委的分数,分数为0~100的整数。')
n=int(input('输入评委人数:'))
score_all=[]
for i in range(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
if y!=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。
【答案】:
for x in range(1,21):
for y in range(1,34):
for z in range(1,101):
if x+y+z==100 and 5*x+3*y+z/3==100:
print('鸡公、鸡母、小鸡的数量分别为:',x,y,z)
【解析】:见答案第 15 页 共 18 页必修1 数据与计算
第四章 程序设计基础
4.1 程序设计语言的基础知识
4.1.1 Python的常量和变量
常量:常量是指在程序运行过程中其值始终不发生变化的量,通常是固定的数值或字符串,在程序中可以直接使用。
变量:变量是指在程序运行过程中其值可以发生变化的量,变量由变量的标识符(变量名)和变量的内容(赋值)两部分组成。
变量的命名:标识符由字母(A-Z,a-z)、数字(0-9)、下划线( _ )组成。 注意:第一个字符必须是字母或下划线,不能是数字,如a1、_a;同时,字母区分大小写,如X和x、sum和Sum都是不同的标识符。
变量的赋值:x=3表示将“=”右边的值赋给左边的变量。
4.1.2 Python的数据类型
(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.3 Python的运算符与表达式
(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 x and y x为false,则返回false,否则返回y的计算值 (a and b)返回0 (c and b)返回1
or x or y x为true,则返回x的值,否则返回y的计算值 (a or b)返回1 (c or b)返回2
not not x x为true返回false; x为false返回true not(a and b)返回true
关系运算符与关系表达式
由关系运算符连接而成的表达式称为关系表达式。关系表达式的值:True、False,对应整数1和0。
关系运算符 含义 示例 结果
> 大于 4>3 true
>= 大于等于 3>=3 true
< 小于 4<3 false
<= 小于等于 4<=3 true
== 等于 4==3 fasle
!= 不等于 4!=3 true
赋值运算符与赋值表达式
对变量的赋值通过赋值运算符“=”来完成。赋值号不是等号,具有方向性,由右边赋给左边的变量。除了“=”外,还有以下赋值运算符。
赋值运算符 含义 示例
= 直接赋值 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
成员运算符
Python中用成员运算符判断序列中是否有某个成员。
成员运算符 描述 示例
in x in y,如果x是序列y的成员,则计算结果为true,否则为false 3 in[1,2,3,4]结果为true 5 in[1,2,3,4]结果为false
not in x not in y,如果x不是序列y的成员,则计算结果为true,否则为false 3 not in[1,2,3,4]结果为false 5 not in[1,2,3,4]结果为true
运算符的优先级
当一个表达式中有多种运算时,运算的顺序是根据运算符的优先级由高到低进行运算。同级运算则按从左到右的顺序进行。
4.1.4 Python的函数
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.1 for循环语句
格式:for 循环变量 in 列表:
语句或语句组
1.直接罗列的方式举例:
for value in [1,2,3,4,5]:
2.使用range( )函数
range(start,stop,step)
计数从start开始(如果省略默认是0)
到stop结束(但不包括stop),
step表示步长,即间隔,(如果省略默认为1),step也可以是负数。
4.4.2 while循环语句
格式:while(表达式):
语句或语句组
while也叫当型循环,表达式是一个关系表达式或逻辑表达式,值为真(True)或假(False)whlie循环的循环体中必须有改变条件表达式值的语句,否则将成为死循环。
4.4.3 循环嵌套
循环嵌套指的是某一种循环语句中包含着自身或其他循环语句,for循环或while循环之间可以相互嵌套。
第四章 程序设计基础 学业测试
一、单选题
1.在Python中,元素是无序不重复的是( )。
A.列表 B.元组 C.集合 D.字符串
2.在以下运算符中,优先级最低的运算符是( )。
A.* B.!= C.+ D.=
3.有以下程序段:
sum=1
for i in range(1,5):
sum=sum*i
print(sum,i)
程序的运行结果为( )。
A.24 5 B.120 5 C.24 4 D.120 4
4.在程序设计中,数据的( )是最基本的操作之一。
A.输入 B.输出 C.输入输出 D.计算
5.在Python语言中,数据的输入是通过( )来实现的。
A.input( )函数 B. print( )函数 C.output()函数 D.abs()函数
6.在Python语言中,数据的输出是通过( )来实现的。
A.input()函数 B.print()函数 C.output()函数 D.abs()函数
7.顺序控制结构的程序执行过程是( )依次执行的。
A.自上而下 B.自下而上 C.自外到内 D.由内到外
8.input( )函数的返回结果是( )。
A.数值型 B.集合 C.列表 D.字符串
9.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( )。
A.算术运算、赋值运算、关系运算 B.算术运算、关系运算、赋值运算
C.关系运算、赋值运算、算术运算 D.关系运算、算术运算、赋值运算
10.请判断如下程序的运行结果是将三个数( )。
print(”请输入3个数:")
x=int(input("x=”))
y=int(input("y="))
z=int(input("z="))
temp=0
if x>y:
temp=y
y=x
x=temp
if x>z:
temp=z
z=x
x=temp
if y>z:
temp=z
z=y
y=temp
print("这3个数新序列是:",x,y,z)
A.从小到大排序 B.从大到小排序
C.都变成最大的数 D.都变成最小的数
11.在Python语言中,通过关键字( )来定义函数。
A. def B.function C. fun D.procedure
12.在Python 语言中,求数组长度用( )函数。
A.size B. len C. length D.str
13.在Python语言中,如果a是一个长度为10的数组,请问a[-1]( )。
A.表示数组a的第1个元素 B.表示数组a的第9个元素
C.表示数组a的最后1个元素 D.会发生下标越界,出现错误
14.在Python 语言中,如果a是一个整数,请问以下表达式恒为False的是( )。
A.a%5==0 B. a>3 and a<4 C. a>3 or a<3 D.a==True
15.在Python语言中,如果a是一个集合,以下哪个语句可以添加一个元素 ( )
A. a.append(1) B. a.extend(1) C.a[1]=3 D.a.add(1)
二、思考题
16.编写函数,接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。
17.反向输出一个三位数。
将一个三位数反向输出,例如输入358,反向输出853。
输入:一个三位数n输出:反向输出n
样例输入:100,样例输出:001
请问如何保证输出结果中001前面的“0”不丢失 请编程序解决此问题。
三、情境题
18.选手得分问题。
学校要举行辩论赛,请写一个程序计算选手的最终得分,计算规则为去掉最高分和最低分,然后计算平均分。分行完成输入多个评委的打分。输入的分数保证是0~100之间的整数。
例如:
输入:6(6个评委,以下6个数分别是6个评委的评分)
92
88
98
65
76
82
输出:84.5(选手的最终得分)
19.苹果和虫子问题。
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果
输入:
输入仅三行,包括n,x和y(均为整数)
输出:
输出也仅一行,剩下的苹果个数
样例输入:
10
4
9
样例输出:
7
20.百钱买百鸡问题。
百钱买百鸡问题记载于中国古代5-6世纪成书的《张邱建算经》中的一道经典不定方程组的问题,其重要之处在于开创“一问多答”的先例,这是过去中国古算书中所没有的。其问题是这样的:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何 请编程求解这个问题。
提示:利用循环结构进行问题求解,其中三种鸡数量x,y,z同时符合如下两个条件:x+y+z=100,5x+3y+z/3=100。第 13 页 共 13 页