基于Python实现扑克牌面试题


Posted in Python onDecember 11, 2019

这篇文章主要介绍了基于Python实现扑克牌面试题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

据说是腾讯的面试题,以下是要求:

一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌。根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组。

实现思路:

1、首先定义一个2维数组,代表最后桌上的牌堆排列情况。内部数组flist[i][0], flist[i][1]分别表示牌堆的排序和牌面的序号。

2、分n为奇数或偶数2种情况,用for循环逆推出原牌组的的顺序值(顺序为小数在下,大数在上)

3、对新数组用顺序值进行逆向排序后,输出由牌面的序号组成的数组

def cl(n):
  flst = [] #用数组flst定义最后桌上的牌堆顺序 
  for i in range(1, n+1): 
    flst.append([i, i])
  if n%2 == 0: #n为偶数情况
    for t in range(1, int(n/2)+1): #t为循环次数,代表一次取牌放牌顶+牌底的过程
      flst[n-t][0] = 2*t - 1
      flst[t-1][0] = 2*t
  else: #n为奇数情况
    flst[0][0]= 1 #新牌堆首张牌必定为原牌堆的最后一张
    for t in range(1, n//2+1):
      flst[n-t][0] = 2*t
      flst[t][0] = 2*t + 1
  olst = sorted(flst, key=lambda x: x[0], reverse=True) #对二维数组进行排序
  res = [i[1] for i in olst] #求得原牌组牌号
  return res

最后测试打印结果

print(cl(10))
 print(cl(11))

输出正确

[5, 6, 4, 7, 3, 8, 2, 9, 1, 10]
[6, 7, 5, 8, 4, 9, 3, 10, 2, 11, 1]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python模拟登陆Tom邮箱示例分享
Jan 13 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
Django框架自定义模型管理器与元选项用法分析
Jul 22 Python
Python将string转换到float的实例方法
Jul 29 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python使用requests.session模拟登录
Aug 09 Python
python 数据提取及拆分的实现代码
Aug 26 Python
pandas apply多线程实现代码
Aug 17 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
Python如何使用argparse模块处理命令行参数
Dec 11 #Python
opencv3/C++ 平面对象识别&透视变换方式
Dec 11 #Python
Python Lambda函数使用总结详解
Dec 11 #Python
Python迭代器模块itertools使用原理解析
Dec 11 #Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 #Python
Python partial函数原理及用法解析
Dec 11 #Python
opencv3/python 鼠标响应操作详解
Dec 11 #Python
You might like
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
php实现字符串翻转的方法
2015/03/27 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
编写React组件项目实践分析
2018/03/04 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
python pdb调试方法分享
2014/01/21 Python
python中对list去重的多种方法
2014/09/18 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
python实现爬山算法的思路详解
2019/04/09 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
教师档案管理制度
2014/01/23 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
皇城相府导游词
2015/02/06 职场文书
厉行节约工作总结
2015/08/12 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
创业计划书之酒厂
2019/10/14 职场文书