当前位置: 首页 > news >正文

杭州微网站建设群晖做网站服务器 套件

杭州微网站建设,群晖做网站服务器 套件,手机百度如何发布作品,手机免费永久建立网站简介 这是新春的第一篇#xff0c;今天早上睡到了自然醒#xff0c;打开手机刷视频就被刘谦的魔术所吸引#xff0c;忍不住用编程去模拟一下这个过程。 首先#xff0c;声明的一点#xff0c;大年初一不学习#xff0c;所以这其中涉及的数学原理约瑟夫环大家可以找找其…简介 这是新春的第一篇今天早上睡到了自然醒打开手机刷视频就被刘谦的魔术所吸引忍不住用编程去模拟一下这个过程。 首先声明的一点大年初一不学习所以这其中涉及的数学原理约瑟夫环大家可以找找其他的教程看看我这块只是复现它魔术里面的每个步骤。 魔术的步骤 总而言之可以分为以下8个步骤 Step 1: 将四张4张牌撕成两半直接将两堆叠放; Step 2: 假设姓名为n个字重复n次将堆在最上的牌放到最下面 Step 3: 将牌堆最上的3张拿出不改变顺序并随机插入牌堆中间 Step 4: 将牌堆最上方的牌拿走放在一旁 Step 5: 按照南/北/不知道是南或者北方地区判断自己属于哪一地区并分别将牌堆最上的1/2/3不改变顺序并随机插入牌堆中间; Step 6: 按性别男/女从牌堆最上方拿走1/2张牌一边念口诀“见证奇迹的时刻”每念一个字将牌堆最上方的牌放到牌堆最下; Step 7: 念口诀“好运留下米”时将牌堆最上的牌放到牌堆最下念“烦恼扔出去”时将牌堆最上方的牌移除。重复这两句口诀直到手中只有一张牌 Step 8: 最后留下的牌和Step 4拿走的牌是一样的。 过程拆开分来其实就是对列表进行一个简单的操作了 用python实现其中的过程 0. 模拟扑克牌打乱并抽取的过程; import random import itertools import copy # 定义扑克牌 suits [红桃, 方块, 梅花, 黑桃] ranks [A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K] jokers [小王, 大王] deck_of_cards list(itertools.product(suits, ranks)) jokers random.shuffle(deck_of_cards) # 模拟打乱的操作 print(f随机生成的{len(deck_of_cards)}扑克牌:, deck_of_cards) selected_cards random.sample(deck_of_cards, 4) print(随机抽取其中的四张牌:, selected_cards) 随机抽取其中的四张牌: [(红桃, 9), (黑桃, 8), (黑桃, A), (黑桃, K)] 1. 将四张4张牌撕成两半直接将两堆叠放; def split_and_stack(cards):cards_copy copy.copy(cards)merged_cards cards cards_copyreturn merged_cardssplit_cards split_and_stack(selected_cards) print(撕成两半后堆叠:, split_cards) 撕成两半后堆叠: [(红桃, 9), (黑桃, 8), (黑桃, A), (黑桃, K), (红桃, 9), (黑桃, 8), (黑桃, A), (黑桃, K)] 2. 假设姓名为n个字重复n次将堆在最上的牌放到最下面 def repeat_name(cards, name):name_length len(name)for _ in range(name_length):# 取出堆在最上的牌,放到最下面top_card cards.pop(0) cards.append(top_card) return cardssplit_cards_repeated repeat_name(split_cards, name) print(f{name} 重复姓名字数次后的牌堆:, split_cards_repeated)夏天是冰红茶 重复姓名字数次后的牌堆: [(黑桃, A), (黑桃, K), (红桃, 9), (黑桃, 8), (黑桃, A), (黑桃, K), (红桃, 9), (黑桃, 8)] 3. 将牌堆最上的3张拿出不改变顺序并随机插入牌堆中间 def take_top_and_insert(cards):top_three_cards cards[:3] # 取出最上面的3张牌remaining_cards cards[3:] # 剩下的牌insert_index random.randint(1, len(remaining_cards))shuffled_cards remaining_cards[:insert_index] top_three_cards remaining_cards[insert_index:]return shuffled_cardsshuffled_cards take_top_and_insert(split_cards_repeated) print(牌堆最上的3张拿出随机插入后的牌堆:, shuffled_cards)牌堆最上的3张拿出随机插入后的牌堆: [(黑桃, 8), (黑桃, A), (黑桃, A), (黑桃, K), (红桃, 9), (黑桃, K), (红桃, 9), (黑桃, 8)] 4. 将牌堆最上方的牌拿走放在一旁 def take_top_card(cards):top_card cards.pop(0) # 取出最上方的牌return top_cardtop_card take_top_card(shuffled_cards) print(拿走的牌:, top_card) print(剩余的牌:, shuffled_cards) 拿走的牌: (黑桃, 8) 剩余的牌: [(黑桃, A), (黑桃, A), (黑桃, K), (红桃, 9), (黑桃, K), (红桃, 9), (黑桃, 8)]  5. 按照南/北/不知道是南或者北方地区判断自己属于哪一地区并分别将牌堆最上的1/2/3不改变顺序并随机插入牌堆中间; def insert_cards_based_on_region(cards, region):if region 南:insert_count 1elif region 北:insert_count 2else:insert_count 3top cards[:insert_count]remaining_cards cards[insert_count:]insert_index random.randint(0, len(remaining_cards)-1)shuffled_cards remaining_cards[:insert_index] top remaining_cards[insert_index:]return shuffled_cardsshuffled_cards_region insert_cards_based_on_region(shuffled_cards, region) print(f{region}方地区插入后的牌堆:, shuffled_cards_region)南方地区插入后的牌堆: [(黑桃, A), (黑桃, K), (红桃, 9), (黑桃, K), (黑桃, A), (红桃, 9), (黑桃, 8)]  6. 按性别男/女从牌堆最上方拿走1/2张牌一边念口诀“见证奇迹的时刻”每念一个字将牌堆最上方的牌放到牌堆最下; def take_and_chant(cards, gender, chant见证奇迹的时刻):take_count 0if gender 男:take_count 1elif gender 女:take_count 2else:print(未知性别)remaining_cards cards[take_count:] # 剩下的牌print(remaining_cards)# 念口诀过程for c in chant:remaining_cards.append(remaining_cards.pop(0)) # 将最上方的牌放到牌堆最下return remaining_cardsremaining_cards take_and_chant(shuffled_cards_region, gender, chant) print(f剩余的牌堆:, remaining_cards) [(黑桃, K), (红桃, 9), (黑桃, K), (黑桃, A), (红桃, 9), (黑桃, 8)] 剩余的牌堆: [(红桃, 9), (黑桃, K), (黑桃, A), (红桃, 9), (黑桃, 8), (黑桃, K)]  7/8. 念口诀“好运留下米”时将牌堆最上的牌放到牌堆最下念“烦恼扔出去”时将牌堆最上方的牌移除。重复这两句口诀直到手中只有一张牌最后留下的牌和Step 4拿走的牌是一样的。 def chant_and_modify(cards):iter 1while len(cards) 1:chant_good_luck 好运留下米chant_throw_away 烦恼扔出去print(f\n第{iter}轮口诀开始:)cards.append(cards.pop(0))print(f口诀{chant_good_luck}结束后手上的牌:, cards)cards.pop(0)print(f口诀{chant_throw_away}结束后手上的牌:, cards)iter 1return cards[0]final_card chant_and_modify(remaining_cards) print(f\n最终留下的牌:{final_card}, Step 4:{top_card}) 第1轮口诀开始: 口诀好运留下米结束后手上的牌: [(黑桃, K), (黑桃, A), (红桃, 9), (黑桃, 8), (黑桃, K), (红桃, 9)] 口诀烦恼扔出去结束后手上的牌: [(黑桃, A), (红桃, 9), (黑桃, 8), (黑桃, K), (红桃, 9)] 第2轮口诀开始: 口诀好运留下米结束后手上的牌: [(红桃, 9), (黑桃, 8), (黑桃, K), (红桃, 9), (黑桃, A)] 口诀烦恼扔出去结束后手上的牌: [(黑桃, 8), (黑桃, K), (红桃, 9), (黑桃, A)] 第3轮口诀开始: 口诀好运留下米结束后手上的牌: [(黑桃, K), (红桃, 9), (黑桃, A), (黑桃, 8)] 口诀烦恼扔出去结束后手上的牌: [(红桃, 9), (黑桃, A), (黑桃, 8)] 第4轮口诀开始: 口诀好运留下米结束后手上的牌: [(黑桃, A), (黑桃, 8), (红桃, 9)] 口诀烦恼扔出去结束后手上的牌: [(黑桃, 8), (红桃, 9)] 第5轮口诀开始: 口诀好运留下米结束后手上的牌: [(红桃, 9), (黑桃, 8)] 口诀烦恼扔出去结束后手上的牌: [(黑桃, 8)] 最终留下的牌:(黑桃, 8), Step 4:(黑桃, 8) 完整的代码 import random import itertools import copy # 定义扑克牌 suits [红桃, 方块, 梅花, 黑桃] ranks [A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K] jokers [小王, 大王] deck_of_cards list(itertools.product(suits, ranks)) jokers random.shuffle(deck_of_cards) # 模拟打乱的操作 print(f随机生成的{len(deck_of_cards)}扑克牌:, deck_of_cards) selected_cards random.sample(deck_of_cards, 4) print(随机抽取其中的四张牌:, selected_cards)# 模拟性别为男的情况 name 夏天是冰红茶 gender 男 chant 见证奇迹的时刻 region 南# step 1: 将四张4张牌撕成两半直接将两堆叠放; def split_and_stack(cards):cards_copy copy.copy(cards)merged_cards cards cards_copyreturn merged_cardssplit_cards split_and_stack(selected_cards) print(撕成两半后堆叠:, split_cards)# Step 2: 设你的姓名为n个字重复n次将堆在最上的牌放到最下面 def repeat_name(cards, name):name_length len(name)for _ in range(name_length):# 取出堆在最上的牌,放到最下面top_card cards.pop(0)cards.append(top_card)return cardssplit_cards_repeated repeat_name(split_cards, name) print(f{name} 重复姓名字数次后的牌堆:, split_cards_repeated)# Step 3: 将牌堆最上的3张拿出不改变顺序并随机插入牌堆中间 def take_top_and_insert(cards):top_three_cards cards[:3] # 取出最上面的3张牌remaining_cards cards[3:] # 剩下的牌insert_index random.randint(1, len(remaining_cards))shuffled_cards remaining_cards[:insert_index] top_three_cards remaining_cards[insert_index:]return shuffled_cardsshuffled_cards take_top_and_insert(split_cards_repeated) print(牌堆最上的3张拿出随机插入后的牌堆:, shuffled_cards)# Step 4: 将牌堆最上方的牌拿走放在一旁 def take_top_card(cards):top_card cards.pop(0) # 取出最上方的牌return top_cardtop_card take_top_card(shuffled_cards) print(拿走的牌:, top_card) print(剩余的牌:, shuffled_cards)# Step 5: 按照南/北/不知道是南或者北方地区判断自己属于哪一地区并分别将牌堆最上的1/2/3不改变顺序并随机插入牌堆中间 def insert_cards_based_on_region(cards, region):if region 南:insert_count 1elif region 北:insert_count 2else:insert_count 3top cards[:insert_count]remaining_cards cards[insert_count:]insert_index random.randint(0, len(remaining_cards)-1)shuffled_cards remaining_cards[:insert_index] top remaining_cards[insert_index:]return shuffled_cardsshuffled_cards_region insert_cards_based_on_region(shuffled_cards, region) print(f{region}方地区插入后的牌堆:, shuffled_cards_region)# Step 6: 按性别男/女从牌堆最上方拿走1/2张牌一边念口诀“见证奇迹的时刻”每念一个字将牌堆最上方的牌放到牌堆最下。 def take_and_chant(cards, gender, chant见证奇迹的时刻):take_count 0if gender 男:take_count 1elif gender 女:take_count 2else:print(未知性别)remaining_cards cards[take_count:] # 剩下的牌print(remaining_cards)# 念口诀过程for c in chant:remaining_cards.append(remaining_cards.pop(0)) # 将最上方的牌放到牌堆最下return remaining_cardsremaining_cards take_and_chant(shuffled_cards_region, gender, chant) print(f剩余的牌堆:, remaining_cards)# Step 7: 念口诀“好运留下米”时将牌堆最上的牌放到牌堆最下念“烦恼扔出去”时将牌堆最上方的牌移除。重复这两句口诀直到手中只有一张牌 def chant_and_modify(cards):iter 1while len(cards) 1:chant_good_luck 好运留下米chant_throw_away 烦恼扔出去print(f\n第{iter}轮口诀开始:)cards.append(cards.pop(0))print(f口诀{chant_good_luck}结束后手上的牌:, cards)cards.pop(0)print(f口诀{chant_throw_away}结束后手上的牌:, cards)iter 1return cards[0]# Step 8: 最后留下的牌和Step 4拿走的牌是一样的。 final_card chant_and_modify(remaining_cards) print(f\n最终留下的牌:{final_card}, Step 4:{top_card})大家可以自己去试一试在步骤6后男生拿走的牌总是会在对应的第5位女生拿走的牌总是会在对应的第3位。 结语 其实说实话这种数学魔术在我小时候买的书里就曾经看到过许多。虽然现在了解了其中的数学原理但当时的惊奇与欢乐感觉依然难以忘怀。刘谦老师在表演中展现了非凡的技艺不仅仅是数学的巧妙运用更是他善于抓住观众的好奇心创造出让人难以置信的奇迹。
http://www.zqtcl.cn/news/580015/

相关文章:

  • 做网站网页的人是不是思维公司网站建设包括
  • 网站建设都包括哪些网站后台如何上传文件
  • 网站便民服务平台怎么做迁安做网站中的cms开发
  • 做外贸比较好的网站怎么把网站做的好看
  • 有没有在淘宝找人做网站被骗过的台州市环保局网站开发区
  • 公司外文网站制作河南住房和城乡建设厅网站
  • 东莞做网站公司有哪些代码网站推荐
  • 棋类游戏网站开发网站首页顶部图片尺寸
  • 工信部如何查网站备案大连网络推广广告代理
  • 网站建设基本流程心得wordpress首页截断
  • 网站包括哪些内容网站开发的相关技能
  • 百度竞价 百度流量 网站权重qq推广
  • 重庆网站建设总结WordPress简单百度站长插件
  • pc网站转换成微网站工作室推广网站
  • 嘉兴优化网站公司做水果生意去哪个网站
  • 青岛知名网站建设公司排名wordpress商场插件
  • 设计网站猪八戒自己制作logo免费生成器
  • 深圳万齐创享网站建设网站建设基本教程
  • 聊城做网站信息建设工程合同可以分为
  • 网站设计 注意做筹款的网站需要什么资质
  • 家居网站建设费用国土局网站建设经验
  • 企业网站开发教程网站建设更改
  • 违法网站怎么做安全wordpress自定义应用
  • 四平英文网站建设wordpress添加特效
  • 如何在手机上制作网站企业网站 微博模块
  • 网站内容规范网站建设建设公司哪家好
  • 深圳网站制作公司地址如何制作手机版网站
  • 深圳定制网站制作报价网络交易平台
  • 鞍山网站制作报价wordpress手机客户端端
  • 开发触屏版网站标签苏州沧浪区做网站的