做土司的网站,wordpress 在线支付,wordpress快站,做外包网站摘要视频回顾 “刘谦老师24年春晚魔术 整理下步骤如下#xff1a; 1.13张扑克牌弄乱抽4张 2.4张牌对折 撕开 3.名字几个字 从上到下放几张下去、 4.拿起最上面3张 插进剩下卡片的中间 5.最上面的一张藏起来 6.南方人/北方人/不确定 从上面拿起一张/两张/3张 插进剩下的牌中间 7.男…视频回顾 “刘谦老师24年春晚魔术 整理下步骤如下 1.13张扑克牌弄乱抽4张 2.4张牌对折 撕开 3.名字几个字 从上到下放几张下去、 4.拿起最上面3张 插进剩下卡片的中间 5.最上面的一张藏起来 6.南方人/北方人/不确定 从上面拿起一张/两张/3张 插进剩下的牌中间 7.男生/女生 从上面拿起一张/两张 扔走 8.“见证奇迹的时刻” 从上面依次放7张到最后 9.“好运留下来 烦恼丢出去” 拿一张放最下面 拿一张丢出去 循环4次 10.女生剩一张 男生剩两张 男生拿一张放最下面 拿一张丢出去 文章目录 分步实现random常用函数deque常用函数最后附上完整代码 分步实现
import random
# 拿13张牌打乱
cards [A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K]
random.shuffle(cards)
print(f打乱顺序的13张牌{cards})
# 输出打乱顺序的13张牌[A, 9, 2, 10, 8, 7, 3, 6, 5, J, 4, K, Q]random.shuffle(x[, random]) 第一个参数为列表; 第二个参数为可选参数用于定义随机规则默认为none; random.shuffle()用于将一个列表中的元素打乱顺序组要注意的是使用这个方法不会生成新的列表只是将原列表的次序打乱。 # 随机抽取4张
random_4_cards random.sample(cards, 4)
print(f随机的4张牌{random_4_cards})
# 输出随机的4张牌[3, 7, 6, 9]random.sample(sequence, k) 第一个参数为序列可以是字符串、列表、元组; 第二个参数为指定长度; random.sample()用于从指定序列中随机获取指定长度的片段不会修改原有序列 # 对折 撕开
from collections import deque
random_8_cards deque(random_4_cards * 2)
print(f对折撕开得到8张牌{random_8_cards})
# 输出对折撕开得到8张牌deque([3, 7, 6, 9, 3, 7, 6, 9])这里用到双向队列deque deque(seq, maxlen) 第一个参数为序列可以是字符串、列表、元组; 第二个参数为限制长度; 两个参数都为可选参数。通常不设定maxlen但注意当限制长度的deque增加超过限制数的元素时, 前边的元素会自动删除 返回一个deque序列 # 名字几个字 从上到下放几张下去
nameNum random.randint(1, 10)
random_8_cards.rotate(-nameNum)
print(f根据名字字数依次放入后面的牌{random_8_cards})
# 输出根据名字字数依次放入后面的牌deque([6, 9, 3, 7, 6, 9, 3, 7])双向队列旋转 rotate(num) num – 从序列的第num个位置整体旋转 若num1表示从右向左的num个数与其左边的所有数顺时针旋转即最后一个到第一位num次 若num-1表示从左向右的-num个数与其右边的所有数逆时针旋转 (即第一位到最后一位num次) # 拿起最上面3张
first_3_cards [random_8_cards.popleft() for i in range(3)]
print(f最上面3张牌是{first_3_cards})
print(f8张牌中剩余的是{random_8_cards})
# 输出最上面3张牌是[6, 9, 3]
# 8张牌中剩余的是deque([7, 6, 9, 3, 7])双向队列中取元素 popleft() 从对头弹出元素每次弹出一个返回弹出的元素 # 拿起的3张插进剩下卡片的中间
for card in first_3_cards:insert_position random.randint(1, len(random_8_cards) - 2)random_8_cards.insert(insert_position, card)
print(f最上面3张随机插入剩余牌的中间后的牌{random_8_cards})
# 输出最上面3张随机插入剩余牌的中间后的牌deque([7, 3, 6, 9, 6, 9, 3, 7])双向队列中插入元素 insert(loc, elem) loc – 插入元素的位置 elem – 插入的元素可为任意类型的元素
生成随机整数 random.randint(a, b) 生成指定范围a~b内的整数 # 最上面的藏起来
remember_card random_8_cards.popleft()
print(f藏起来的牌是{remember_card})
# 藏起来的牌是7
print(f藏起来后剩余的牌是{random_8_cards})
# 藏起来后剩余的牌是deque([3, 6, 9, 6, 9, 3, 7])# 南方人/北方人/不确定 从上面拿起一张/两张/三张 插进剩下的卡片中间
areaNum random.randint(1, 4)
first_areaNum_cards [random_8_cards.popleft() for i in range(areaNum)]
print(f拿起的牌是{first_areaNum_cards})
# 拿起的牌是[3, 6]
for card in first_areaNum_cards:insert_position random.randint(1, len(random_8_cards) - 2)random_8_cards.insert(insert_position, card)
print(f根据南北方人随机插入剩余的牌中间后的牌{random_8_cards})
# 根据南北方人随机插入剩余的牌中间后的牌deque([9, 6, 6, 3, 9, 3, 7])# 男生/女生 从上面拿起一张/两张 扔走
sexNum random.randint(1, 3)
for i in range(sexNum):random_8_cards.popleft()
print(f根据性别扔牌后剩余的牌是{random_8_cards})
# 根据性别扔牌后剩余的牌是deque([6, 6, 3, 9, 3, 7])# 见证奇迹的时刻 从上面依次放7张到最后
random_8_cards.rotate(-7)
print(f见证奇迹的时刻依次放入下面7次后的牌{random_8_cards})
# 见证奇迹的时刻依次放入下面7次后的牌deque([6, 3, 9, 3, 7, 6])以上用到的函数同上 # 好运留下来 烦恼丢出去 拿一张放最下面 拿一张丢出去 女生循环4次 男生循环5次
while len(random_8_cards) 1:random_8_cards.append(random_8_cards.popleft())random_8_cards.popleft()
print(f最后剩余的一张牌是{random_8_cards})
print(f藏起来的牌是{remember_card})
# 最后剩余的一张牌是deque([7])
# 藏起来的牌是7双向队列中加入元素 append() --队尾加入元素 appendleft() --队头加入元素 random常用函数
random.random() # 生成0~1的浮点数
random.uniform(a, b) # 生成a~b的浮点数
random.randint(a, b) # 生成a~b的整数
random.choice(seq) #指定序列中随机返回一个元素
random.shuffle(x) #将列表的顺序随机打乱
random.sample(seq, k) #随机取出指定长度的片段
deque常用函数
collections.deque(seq, maxlen) # 构建双向队列
appendleft(elem) #队头增加元素 append(elem) #队尾增加元素
insert(loc, elem) #指定位置插入元素
popleft() #队头弹出元素 pop() #队尾弹出元素
remove(elem) #删除指定元素
extendleft(seq) #队头添加序列 extend(seq) #队尾添加序列
rotate(num) #num个元素旋转
最后附上完整代码
import random
from collections import dequedef magic():# 拿13张牌打乱cards [A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K]random.shuffle(cards)print(f打乱顺序的13张牌{cards})# 随机抽取4张random_4_cards random.sample(cards, 4)print(f随机的4张牌{random_4_cards})# 对折 撕开random_8_cards deque(random_4_cards * 2)print(f对折撕开得到8张牌{random_8_cards})# 名字几个字 从上到下放几张下去nameNum random.randint(1, 10)random_8_cards.rotate(-nameNum)print(f根据名字字数依次放入后面的牌{random_8_cards})# 拿起最上面3张first_3_cards [random_8_cards.popleft() for i in range(3)]print(f最上面3张牌是{first_3_cards})print(f8张牌中剩余的是{random_8_cards})# 拿起的3张插进剩下卡片的中间for card in first_3_cards:insert_position random.randint(1, len(random_8_cards) - 2)random_8_cards.insert(insert_position, card)print(f最上面3张随机插入剩余牌的中间后的牌{random_8_cards})# 最上面的藏起来remember_card random_8_cards.popleft()print(f藏起来的牌是{remember_card})print(f藏起来后剩余的牌是{random_8_cards})# 南方人/北方人/不确定 从上面拿起一张/两张/三张 插进剩下的卡片中间areaNum random.randint(1, 4)first_areaNum_cards [random_8_cards.popleft() for i in range(areaNum)]print(f拿起的牌是{first_areaNum_cards})for card in first_areaNum_cards:insert_position random.randint(1, len(random_8_cards) - 2)random_8_cards.insert(insert_position, card)print(f根据南北方人随机插入剩余的牌中间后的牌{random_8_cards})# 男生/女生 从上面拿起一张/两张 扔走sexNum random.randint(1, 3)for i in range(sexNum):random_8_cards.popleft()print(f根据性别扔牌后剩余的牌是{random_8_cards})# 见证奇迹的时刻 从上面依次放7张到最后random_8_cards.rotate(-7)print(f见证奇迹的时刻依次放入下面7次后的牌{random_8_cards})# 好运留下来 烦恼丢出去 拿一张放最下面 拿一张丢出去 女生循环4次 男生循环5次while len(random_8_cards) 1:random_8_cards.append(random_8_cards.popleft())random_8_cards.popleft()print(f最后剩余的一张牌是{random_8_cards})print(f藏起来的牌是{remember_card})if __name__ __main__:magic()