小学课后服务 Python少儿编程 提高篇:14-魔术纸牌3 课件 (28张PPT)

资源下载
  1. 二一教育资源

小学课后服务 Python少儿编程 提高篇:14-魔术纸牌3 课件 (28张PPT)

资源简介

(共28张PPT)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
少儿编程课
魔术纸牌(三)
返回列表或字符串的随机项
choice()
列表的计算
运行结果:
['a', 'b', 'c', 'd', 'e']
列表的相加:
a = ['a', 'b', 'c']
b = ['d', 'e']
print(a + b)
choice指令
choice():返回列表或字符串的随机项。
运行结果:
不确定,随机
import random
a = 'abcde'
b = '12345'
list1 = [a, b]
list2 = ['a', 'b']
list3 = [list1, list2]
print(random.choice(a))
print(random.choice(b))
print(random.choice(list1))
print(random.choice(list2))
print(random.choice(list3))
break
终 止
continue
继 续
选牌时的问题
if guess == 1:
list = random.choice(choose1)
elif guess == 2:
list = random.choice(choose2)
else:
list = random.choice(choose3)
有没有一种方法,能让程序在检测到“1、2、3”时继续运行,检测到其它数值时重新输入。
如果输入的数值为“5”,程序也将按照“3”来运行。
想要实现的效果
choose = int(input('你选择的牌在第几列:'))
if choose == 1:
list = random.choice(choose1)
elif choose == 2:
list = random.choice(choose2)
elif choose == 3:
list = random.choice(choose3)
else:
print('输入错误,请重新输入。')
再次开始判断
while True、break
break:跳出一个循环或结束一个循环。
while True:让循环一直进行下去。
完善程序
while True: #添加一个循环
choose = int(input('你选择的牌在第几列:'))
if choose == 1:
list = random.choice(choose1)
break #如果数字为1,在这里结束循环
elif choose == 2:
list = random.choice(choose2)
break #如果数字为2,在这里结束循环
elif choose == 3:
list = random.choice(choose3)
break #如果数字为3,在这里结束循环
else:
print('输入错误,请重新输入。') #如果输入其它数字,重新开始循环
完善魔术
反思总结
序号与纸牌的位置关系
魔术实现的原理就隐藏在每一次收牌和发牌中。
在发牌时,将21张牌分成了3列。
序号 分组计算 列 行
第1张牌 1 / 3 = 0 ……1 1 1
第2张牌 2 / 3 = 0 ……2 2 1
第3张牌 3 / 3 = 1 ……0 3 1
第4张牌 4 / 3 = 1 ……1 1 2
第5张牌 5 / 3 = 1 ……2 2 2
第6张牌 6 / 3 = 2 ……0 3 2
第7张牌 7 / 3 = 2 ……1 1 3
第8张牌 8 / 3 = 2 ……2 2 3
第9张牌 9 / 3 = 3 ……0 3 3
…… …… …… ……
可以看出:
余数=列数(当余数为0时,列数为3)
余数为0时,商=行数;余数不为0时,商+1=行数。
控制序号
当纸牌的序号为11时,经过发牌后,纸牌可以出现在第2列第4行的位置上。
纸牌在牌堆中的序号与收牌顺序有关,这就是在收牌时含有被选择牌的那列纸牌总被放在中间的原因。
举例分析
首先,观众选择一张牌,假设这张牌在第1列内。
第一次收牌
第一次收牌后,红桃A的序号为14。
此时,可求得发牌后红桃A的位置。
序号 分组计算 列 行
14 14 / 3 = 4……2 2 5
第一次发牌
第一次发牌结束后,红桃A来到了第2列第5行的位置。
第二次收牌
第二次收牌后,红桃A的序号为12。
此时,可求得发牌后红桃A的位置。
序号 分组计算 列 行
12 12 / 3 = 4……0 3 4
第二次发牌
第二次发牌结束后,红桃A来到了第3列第4行的位置。
第三次收牌
第三次收牌后,红桃A的序号为11。
此时,可求得发牌后红桃A的位置。
序号 分组计算 列 行
11 12 / 3 = 3……2 2 4
第三次发牌
第三次发牌结束后,红桃A来到了第2列第4行的位置。
魔术的实现
第一次发牌
观众选牌
按顺序收牌
第二次发牌
观众选牌
按顺序收牌
第三次发牌
观众选牌
按顺序收牌
第四次发牌
第2列第4行
无论观众选择了哪一张牌,经过三次收牌、发牌后,这张牌都会来到第2列第4行的位置。
反思总结
项目代码(一)
项目代码(二)
项目代码(三)

展开更多......

收起↑

资源预览