内容正文:
nullPython程序设计6
***本堂基础知识***
· 【内建函数】
1. range(开始, 结束, 步长):返回一个序列对象,含开始不含结束,步长省略即为1,开始省略即为0,参数间的分隔符是短号”,” 。
如: range(1,6) #生成范围1,2,3,4,5
如: range(6) #生成范围0,1,2,3,4,5
如: range(0,6,2) #生成范围0,2,4
如: range(5,1,-1) #生成范围5,4,3,2
· 【字典】
1. 字典和列表类似,可以包含多个元素。字典中的每个元素包含两个部分内容:键和值,称为键值对。键和值两者一一对应,且每个键只能对应一个值。字典用一对花括号“{ }”括起来,键与值之间用冒号“:”, 多个键值对之间用短号“,”分隔。
2. 字典的创建:
字典名={键1:值1, 键2:值3, ……}
如:d1={"姓名":"张三","身高":178}
d2={ } #表示d2是一个空字典
3. 字典元素的引用:
字典中的元素是没有顺序的,引用元素时用键作为索引。如:
要引用d1的姓名“张三”,可以用 d1['姓名']
4. 添加元素:如果引用的键在字典中没有出现,会自动添加到字典作为新的元素,如:
d1['体重']=65 # 完成后d1={'姓名': '张三', '身高': 178, '体重': 65}
· 【语句】
break #退出循环(提前结束循环)
· 【循环程序应用】
例1:编写Python程序进行成绩分析,学号为1 ~5号同学的技术成绩依次存储在列表xx中,求出5个学生的技术平均分。
xx = [75,89,88,92,71]
s = 0
for i in range(len(xx)):
s+=xx[i]
ave=s/len(xx)
print("技术学科平均分为:" , ave )
例2:从键盘输入一个姓名,查找他的技术成绩。
xm=['张飞','刘备','关羽','诸葛亮','赵云']
xx=[75,89,88,92,71]}
x=input("请输入要查找的姓名:")
for i in range(len(xm)):
if x==xm[i]:
print(xm[i],xx[i])
break
else:
print("查无此人")
***当堂练习***
1.写出下面range生成的范围
表达式
结果
表达式
结果
range(3,6)
range(1,6,2)
range(3)
range(3,1,-1)
range(3,1)
range(1,5,-1)
2. 用索引遍历各元素,查找最小值
x=[9,7,8,6]
min=x[0]
for i in :
if x[i]<min:
min=x[i]
print("最小值是:",min)
3. 字典练习
已知有字典为d1={"姓名":"张三","身高":178} 存储着各文具的数量 ,试着完成下列练习:
获取d1中的"姓名":
为d1中的"身高"修改为187:
为d1中添加键值对"性别":"女"
4. 将下列程序补充完整,以实现:学生的成绩列表xx = [75,89,88,92,71],学生的姓名为: 张飞,刘备,关羽,诸葛亮,赵云,姓名和成绩能一一对应。要实现根据输入的姓名,找到并显示该学生的成绩。
info= #①
x=input("请输入要查找的姓名:")
if : #②
print(x,info[x])
else:
print('查无此人')
***下节提要***
1. 第三方模块----随机数random
2. while循环语句
班级:高一( ) 姓名: 2 7
学号
等级:A B C D E选择题答案
***课后作业***
鲁迅中学信息技术同步 必修一3.2python程序设计 编制:沈华顺
Python程序设计第6节 第 2 页共 27页
学科网(北京)股份有限公司
1. 要生成1,3,5,7这个序列,下列表达式能实现的是( )
A.range(1,7) B.range(1,8)
C.range(1,7,2) D.range(1,8,2)
2. range(4,1)生成的序列范围是( )
A. 1,2,3,4 B.4,3,2
C. 2,3,4 D.空
3. 若用字典dic存储旅途中各消费项目所产生的费用,dic={"住宿":560,"吃饭":378,"交通":132}。现新增一项门票费用,费用值为320元,下列语句中能够实现的是( )
A.dic{"门票"}=320 B.dic["门票"]=320 C.dic[320]="门票" D.dic[]="门票":320
4. 用字典dic存储不同食物的热量,dict={"米饭":120,"菠萝":53,"酸奶":134,"巧克力":610}。若要将其中酸奶的热量值改为398,下列Python语句中正确的是( )
A.dict{"酸奶"}=398 B.dict["酸奶"]=398 C.dict[2]=398 D.dict={"酸奶":398}
5. 某网络平台登录时需要用户输入用户名和密码进行验证。用Python程序实现一个“验证用户登录”的程序,Python程序段如下:
dic={"Name":"admin","Password":"j1234y"}
user=input("请输人用户名:")
psd=input("请输人密码:")
if :
print("登录成功!")
else:
print("用户名或密码错误!")
划线处应填的代码为( )。
A. user== dic{"Name"} and psd==dic{"Password"}
B. user== dic["Name"] and psd==dic["Password"]
C. user== dic{"Name"} or psd==dic{"Password"}
D. user== dic["Name"] or psd==dic["Password"]
6. 有如下Python程序段:
s=0
for i in range(5):
s+=1
程序段执行后s结果是( )
A. 5 B.6 C.0 D.1
7. 有如下Python程序段:
s=1
for i in range(1,6):
s=s*i
if i==4:
break
print(s)
该程序段执行后的结果是( )
A. 720 B. 120 C. 24 D.6
8. 有如下Python程序段:
li=[1,3,5,7,9,11]
s=1
for i in range(1,len(li),2):
s=s+li[len(li)-i]
print(s)
该程序段执行后,变量s的值是( )
A.15 B.21 C.22 D.27
(选做)9.用python语言编写程序,实现猜拳游戏,设甲出拳为a, 乙出拳为b,由电脑判断甲乙的输赢。(0—石头,1—剪刀,2—布,可用字典存储这一结构,如dic={0:’石头’,1:’剪刀’,2:’布’})。a=1,b=0时显示如下图:
设已经得到甲出拳a,乙出拳b,a、b为0~2的整数。输赢规则:
甲a
乙b
胜方
0
0
平局
0
1
甲
0
2
乙
1
0
乙
1
1
平局
1
2
甲
2
0
甲
2
1
乙
2
2
平局
$第三章
算法的程序实现
3.2Python语言程序设计
--Python语言基础
10. range()
11. 字典
12. for的应用—顺序查找
鲁迅中学 沈华顺 2024.8
作业分析
6. 有如下Python程序段:
x=0
for i in [2,3,7,4]
x=x+i
print(x)
该程序段执行后,变量x的值是( B )
A.6 B.16 C.0 D.2374
复习回顾
上一节的精彩
正索引: 0 1 2 3 4 0 1 2 3 4 5 6
序列 lst=[ 10, 20, 30, 40, 50 ] s=”物化生政史地技”
负索引: -5 -4 -3 -2 -1 -7-6-5-4-3-2-1
1.列表
2.序列的引用
3.序列的切片
lst[ 开始 : 结束 : 步长 ] 含开始,不含结束
4.序列的长度 len(序列名)
上一节的精彩
5.for 循环
FOR循环语句语法
for 循环变量 in 序列:
循环体(重复运行的语句)
6.for 实例,求序列中的最小值
x=[9,7,8,6]
min=x[0]
for i in [1,2,3]:
if x[i]<min:
min=x[i]
print("最小值是",min)
x=[9,7,8,6]
min=x[0]
for i in x:
if i <min:
min= i
print("最小值是",min)
选做题
xx = [75,89,88,92,71]
s = 0
for i in xx:
s+=i
ave=s/len(xx)
print("技术学科平均分为:" , ave )
9. 编写Python程序进行成绩分析,学号为1 ~5号同学的技术成绩依次存储在列表xx中,求出5个学生的技术平均分。
xx = [75,89,88,92,71]
s = 0
for i in [0,1,2,3,4]:
s+=xx[i]
ave=s/len(xx)
print("技术学科平均分为:" , ave )
0, 1, 2, 3, 4
如果学生有40个,有没有办法自动生成0~39的索引?
6
本节的内容
range()函数
range(开始, 结束, 步长):返回一个序列对象,含开始不含结束,步长省略即为1,开始省略即为0,参数间的分隔符是短号”,” 。
如: range(1,6) #生成范围1,2,3,4,5
如: range(0,6,2) #生成范围0,2,4
如: range(5,1,-1) #生成范围5,4,3,2
如: range(6) #生成范围0,1,2,3,4,5
要生成0-39索引: range(0,40)
练一练(当堂练习1)
表达式 结果 表达式 结果
range(3,6) range(1,6,2)
range(3) range(3,1,-1)
range(3,1) range(1,5,-1)
1.写出下面range生成的范围
3,4,5
0,1,2
1,3,5
3,2
区间方向与步长方向不一致,生成的范围为空
空
空
9
实例1.求列表中成绩的平均分
xx = [75,89,88,92,71]
s = 0
for i in [0,1,2,3,4]:
s+=xx[i]
ave=s/len(xx)
print("技术学科平均分为:" , ave )
原求平均值程序:
xx = [75,89,88,92,71]
s = 0
for i in
s+=xx[i]
ave=s/len(xx)
print("技术学科平均分为:" , ave )
range( 5 ):
要生成0~4的范围
元素个数也是5个
len(xx)
len(xx)
无论多少个学生的成绩,可用len()求出长度,作为索引范围,这样使代码更具适应性。
练一练2(当堂练习2)
2. 用索引遍历各元素,查找最小值
用range生成索引范围:
x=[9,7,8,6]
min=x[0]
print("最小值是:",min)
原来的程序:
x=[9,7,8,6]
min=x[0]
for i in [1,2,3]:
if x[i]<min:
min=x[i]
print("最小值是",min)
实例2.
学生的成绩列表xx = [75,89,88,92,71],学生的姓名为: 张飞,刘备,关羽,诸葛亮,赵云,姓名和成绩能一一对应。要实现根据输入的姓名,找到并显示该学生的成绩。怎么解决?
1.姓名和成绩的存储一一对应问题
2.根据姓名查找成绩的问题
姓名是不是也可以这样?
xm = ['张飞','刘备','关羽','诸葛亮','赵云’]
通过索引号对应
怎么能找到姓名?找到姓名就能找到成绩。
xm[i]== ‘刘备‘ #找到,那么成绩就是xx[i]
实例2.
学生的成绩列表xx = [75,89,88,92,71],学生的姓名为: 张飞,刘备,关羽,诸葛亮,赵云,姓名和成绩能一一对应。要实现根据输入的姓名,找到并显示该学生的成绩。怎么解决?
xm=['张飞','刘备','关羽','诸葛亮','赵云']
xx=[75,89,88,92,71]
x=input("请输入要查找的姓名:")
顺序查找
FOR循环语句语法
for 循环变量 in 序列:
循环体(重复运行的语句)
else:
子句
#for循环正常结束时,如果循环执行过程中遇到break提前结束就不执行else及它的子句。
字典
字典和列表类似,可以包含多个元素。字典中的每个元素包含两个部分内容:键和值,称为键值对。键和值两者一一对应,且每个键只能对应一个值。字典用一对花括号“{ }”括起来,键与值之间用冒号“:”, 多个键值对之间用短号“,”分隔。
1. 字典的定义:
如:d1={"姓名":"张三","身高":178}
2.字典元素的引用:
字典中的元素是没有顺序的,引用元素时用键作为索引。如:
要引用d1的姓名“张三”,可以用 d1['姓名’]
3.字典添加或修改元素:
如果引用的键在字典中没有出现,会自动添加到字典作为新的元素,
如:
d1['体重']=65 # 完成后d1={'姓名': '张三', '身高': 178, '体重': 65}
字典练习
已知有字典为 d1={“姓名”:“张三”,“身高”:178},试着完成下列练习:
获取d1中的“姓名”:
为d1中的”身高”修改为187:
为d1中添加键值对“性别”:”女”
d1["姓名“]
d1[“身高“]=187
d1[“性别“]="女"
用字典解决实例2.
学生的成绩列表xx = [75,89,88,92,71],学生的姓名为: 张飞,刘备,关羽,诸葛亮,赵云,姓名和成绩能一一对应。要实现根据输入的姓名,找到并显示该学生的成绩。怎么解决?
用字典来组织上述数据:
info={'张飞’:75,'刘备’:89,'关羽’:88,'诸葛亮’:92,'赵云’:71}
in 运算符可以判断是否键是否在字典中
‘诸葛亮’ in info #结果为True
if ‘诸葛亮’ in info:
print(info['诸葛亮’])
else:
print(‘查无此人’)
获取 ‘诸葛亮’ 的成绩
info['诸葛亮’]
用字典解决实例2.
学生的成绩列表xx = [75,89,88,92,71],学生的姓名为: 张飞,刘备,关羽,诸葛亮,赵云,姓名和成绩能一一对应。要实现根据输入的姓名,找到并显示该学生的成绩。怎么用字典解决?
info= #①
x=input("请输入要查找的姓名:")
if : #②
print(x,info[x])
else:
print('查无此人')
{'张飞':75,'刘备':89,'关羽':88,'诸葛亮':92,'赵云':71}
x in info
挑选一个好的数据结构,能使问题简单化。
小结:
1、内建函数range()
2、字典
3、for的应用(顺序查找)
$