内容正文:
任务4.3 元组
用扑克牌实现抽奖
4.3 元组——用扑克牌实现抽奖
【任务描述】
扑克(Poker)是人们常用的游戏工具,不同的花色和牌值可以辅助我们做很多有趣味的活动。现在班级里举行活动,小T作为抽奖环节的负责人,想充分利用扑克牌和Python程序来实现抽奖,大家和小T一起来思考:怎样利用扑克和程序实现抽奖。
小T是用这样的思路来组织抽奖环节的:班级中有50位同学,每位同学随机抽取一张扑克牌(除副牌大王和小王),小T用Python程序产生一副扑克牌(正牌),用随机数函数随机产生若干牌,手上牌与程序随机产生牌一致的同学就中奖了。
4.3 元组——用扑克牌实现抽奖
【任务分析】
一副扑克牌有54张牌,其中52张是正牌,52张正牌又均分为13张一组,由黑桃♠、红桃♥、梅花♣、方块◆四种花色组成,每组花色的牌包括从1~10(1通常表示为A)及J、Q、K标示的13张牌,我们可以用元组实现。花色、数字的组合可以得到这52张正牌,我们可以用如“♠J”的形式来表示一张牌。根据经验,解决该任务,我们可以用Python中的元组等数据类型。
4.3 元组——用扑克牌实现抽奖
扑克牌
黑桃♠、红桃♥、梅花♣、方块◆四种花色
1-10(1通常表示为A)以及J、Q、K标示的13张牌
班级活动抽奖:
入场抽扑克牌,python程序产生扑克牌,并随机抽奖
4.3 元组——用扑克牌实现抽奖
扑克牌(“♠J”)产生:
(1)定义两个元组分别存储花色和牌值
(2)循环嵌套这这两元组,进行两两组合,循环一次,产生一张扑克牌
(3)定义一个列表存储扑克牌,将新的扑克牌添加到此列表中
抽奖(“♠J”)环节:
(1)产生n个0~53的随机数
(2)把这些随机数作为下标,取出列表中扑克牌
4.3 元组——用扑克牌实现抽奖
4.3.1 元组的基本操作
4.3.2 元组的常用方法
4.3.3 元组任务实现——用扑克牌实现抽奖
4.3.1 元组的基本操作
4.3.1 元组的基本操作
元组的创建
元组的访问
元组的遍历
元组的切片
元组的删除
4.3.1 元组的基本操作
元组(tuple)和列表类似,它是有序的、可以包含任意类型元组,我们可以把它看做不可变的列表。
(1)元组是有序的,它可以通过位置进行索引和切片。
正向下标从0开始;反向下标从-1开始。
(2)元组可以存储任意数据类型的对象,且允许重复。
(3)元组一旦创建就不能修改,元组对象的个数不能修改,元组里元素的值也不能修改。即不能修改、删除元组里的数据项。
1.元组的创建
(1)用小括号“()”创建元组,小括号内不同的元素使用逗号分隔。
即便是只有一个数据项,其后也需要有逗号。
在创建元组时,不可省略逗号,可省略括号。
元素可以是不同类型的数据。如果括号内没有任何元素,那么创建的是空元组。
4.3.1 元组的基本操作
【例4-36】元组的创建1。
tup1=(50)#只有一个元素,后不加逗号,被认为是其他类型变量
tup2=(50,)#只有一个元素,后加逗号,定义为元组
tup3=50,#只有一个元素,后加逗号,没有括号也定义为元组
print(type(tup1))
print(type(tup2))
print(type(tup3))
<class 'int'>
<class 'tuple'>
<class 'tuple'>
4.3.1 元组的基本操作
(2)用tuple()函数创建
tup=tuple([2008,'China',50])
print(type(tup))
print(tup)
<class 'tuple'>
(2008, 'China', 50)
4.3.1 元组的基本操作
【例4-37】元组的创建2。
即学即答:
元组的每个元素的类型必须不同。
A.对
B.错
4.3.1 元组的基本操作
2.元组的访问
可以用正序或倒序索引访问元组中的元素
元组名[索引]
2008 'China' 50
0 1 2
-3 -2 -1
正向
负向
4.3.1 元组的基本操作
【例4-38】元组的访问。
tup=(2008,'China',50)
print(tup[0])
print(tup[2])
print(tup[-2])
2008
50
China
4.3.1 元组的基本操作
4.3.1 元组的基本操作
即学即答:
a=((1,2,3,4,5),(2,3,4,5,6),(3,4,5,6,7),(4,5,6,7,8)),那么a[2][3]的值是( )
A.2 B.3
C.5 D.6
3.元组的连接和删除
元组中的元素虽然不能进行修改和删除,但我们可以通过连接来增加元组中的元素;
虽然不能删除元组中的元素,但可以用del来删除整个元组。
4.3.1 元组的基本操作
【例4-39】元组的连接。
tup1=(2008,'China',50)
tup2=(2020,2021)
tup3=tup1+tup2
tup4=tup1*2
print(tup3)
print(tup4)
del tup4 # 删除元组,在输出时会报错,因为该元组已被删除
print(tup4)
(2008, 'China', 50, 2020, 2021)
(2008, 'China', 50, 2008, 'China', 50)
NameError: name 'tup4' is not defined
4.3.1 元组的基本操作
4.元组的切片
元组的切片与列表类似,通过索引来进行,切片后得到的变量还是一个元组,其语法格式如下:
元组[start : end : step]
4.3.1 元组的基本操作
start表示起始索引,从0开始;
end表示结束索引;
step表示步长,在步长为正时表示从左向右取值,在步长为负时表示反向取值。
4.3.1 元组的基本操作
tup=(2008,'China',50,2021)
print(tup[0:])
print(tup[0:3:2])
print(tup[1:2])
print(tup[-2:-1])
(2008, 'China', 50, 2021)
(2008, 50)
('China',)
(50,)
【例4-40】元组的切片。
5.元组的遍历
for循环来遍历列表元素
tup=(2008,'China',50)
for x in tup:
print(x)
for i in range(len(tup)): # for和range组合遍历元组元素
print(tup[i])
2008
50
China
2008
50
China
4.3.1 元组的基本操作
4.3.1 元组的基本操作
边学边练:
请完成下面操作:
(1)请创建一个元组,元组元素为-1,2,10,-5,-7。
(2)请打印出元组中索引值从1到3的元素。
(3)请打印出该元组索引为0、2的元素。
$$