在群里看到了一个面试题,想了两种解法,不知道符不符合要求,记录如下:

题目:有N个人,每人备一个圣诞礼物,现需要写一个程序,随机交互礼物,要求:自己不能换到自己的礼物,用python实现。

方法一:

构造二维列表存储参与者的名字和所带礼物,使用random.choice()随机选择礼物。

import randomlsGiftIn = [['Jack','apple'],['June','ball'],['Mary','card'],['Duke','doll'],['James','egg'],['Tina','flute'],['Tom','coffee']]#存储参与者的姓名和自己带来的礼物
lsGiftOut = []#存储交换后的结果
n = len(lsGiftIn)#参与人数
gifts = [i[1] for i in lsGiftIn]#未分配出去的礼物
for x in range(n):flag = 0person = lsGiftIn[x][0]myGift = lsGiftIn[x][1]if myGift in gifts:flag = 1gifts.remove(myGift)getGift = random.choice(gifts)#随机分配礼物lsGiftOut.append([person,getGift])gifts.remove(getGift)if flag:gifts.append(myGift)print(lsGiftOut)

方法二:

构造字典存储参与者的姓名和礼物,其中姓名为key,礼物为value,使用字典的popitem()方法随机返回礼物。

dictGiftIn = {'Jack':'apple','Peter':'beer','Tom':'card','Duke':'doll','Mary':'pineapple','James':'flute','Tina':'coffee'}
dictGiftOut = {}
persons = list(dictGiftIn.keys())
for p in persons:flag = 0#标记自己带来的礼物是否还未分配出去if p in dictGiftIn:flag = 1myGift = dictGiftIn.pop(p)#如果自己带来的礼物还未分配,则去掉该礼物getGift = dictGiftIn.popitem()#随机返回并移除一对key-value值dictGiftOut[p] = getGift[1]#得到的礼物if flag:dictGiftIn[p] = myGift#将自己的礼物添到未分配礼物中print(dictGiftOut)#输出礼物分配情况

The End ~

Python——随机交换圣诞礼物相关推荐

  1. 文本数据增强-同义词替换、随机交换、随机插入、随机删除

    根据zhangy代码改写,主要针对千言问题匹配进行文本数据增强. 依赖安装 pip install jieba pip install synonyms eda.py import jieba imp ...

  2. python 随机生成密码

    python 随机生成密码 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : 随机生成密码 ...

  3. python随机生成30个8_Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例...

    上代码: 环境:Python3 import random,string s=string.ascii_letters+string.digits print(s) n={''.join(random ...

  4. Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略

    Python语言学习:利用Python随机生成那些事之随机生成使用方法.案例应用之详细攻略 目录 案例应用 1.随机生成指定区间内的某一值 案例应用 1.随机生成指定区间内的某一值 使用说明:给定区域 ...

  5. Python 随机森林特征重要度

    Python 随机森林特征重要度 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 随机森林特征重要度简介 决策树的优点是通过树 ...

  6. Python 随机森林分类

    Python 随机森林分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 决策树分类简介 相关概念见下: 决策树的最大问题是 ...

  7. python随机生成数字列表_详解Python利用random生成一个列表内的随机数

    首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range(1,34)) print得到一系列随机数,执行一次得到 ...

  8. 随机交换检验数据挖掘结果-assessing data mining result via swap randomization

    转载自己的博客: http://blog.csdn.net/lgnlgn/article/details/5936945 数据挖掘中一个重要的研究议题是确定发现的模式或模型是否显著.虽然传统统计方法已 ...

  9. 利用python随机生成姓名的实例教程

    本篇文章主要讲解:利用python随机生成姓名的实例教程 作者:任聪聪 整体思路 在我们生成姓名的时候,一般我们要考虑的是姓名的组合构成,姓+名,姓是固定的,名是随机的,故此我们可以通过随机调用常用汉 ...

最新文章

  1. 反向工程_反向工程:宾利精心复刻了1929 Blower车型
  2. 那些年,我在西安的“遇见”(一)
  3. tomcat+mysql数据库连接池的操作
  4. 机器学习A-Z~简单线性回归
  5. 【glibc源码分析】--strcpy.c 字符串复制
  6. 【华为大咖分享】1.云上开发,代码托管只是第一步(后附PPT下载地址)
  7. matlab进行图片修补,Matlab基于样本的图像修补方法代码的一些问题!
  8. *nix下部署第三方动态库文件
  9. 高级函数技巧-函数柯里化
  10. 代码能跑就不要动,为什么我们都会有这样的想法?
  11. 酒吧手机游戏java_酒吧里24种常见游戏的玩法
  12. 4W家庭理财 V2.0
  13. 河北古村落版画展开幕 河北这些古村落你值得去看看
  14. Spring之事务传播行为
  15. 辞职信前端源码文件分享
  16. 互动编程习作——表现随机行为及牛顿运动学
  17. 3975: 人工智能(障)?
  18. linux系统服务器忘记密码怎么办
  19. linux下运行directx,使用DXVK在Linux上改善您的葡萄酒游戏
  20. 台式计算机电源怎么看,怎么看电脑电源多少w 查看自己电脑功耗方法 (全文)

热门文章

  1. 【独家】华为OD机试 - 去重求和(C 语言解题)
  2. 极乐技术周报(第二十一期)
  3. 什么是Host OS和Guest OS?
  4. jquery indexOf方法
  5. (每日一练c++)CC20 分割回文串
  6. 游程检验与秩和检验的Python实现
  7. IntelliJ IDEA 2019 配置 PHP 调试 xdebug 并进行测试
  8. 入伏从哪天算起比较准确性_2018入伏从哪天算起:2018哪天入伏,2018年入伏吃什么...
  9. 超分辨率重建之SRCNN整理总结(三)
  10. 分析了波周杰伦,还做了数据可视化!