基于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装饰器使用的一些建议
Jun 03 Python
python类和继承用法实例
Jul 07 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
selenium+python实现自动登录脚本
Apr 22 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
python线程的几种创建方式详解
Aug 29 Python
python scrapy重复执行实现代码详解
Dec 28 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
javascript Prototype 对象扩展
2009/05/15 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
Python Tkinter基础控件用法
2014/09/03 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
学生党员思想汇报
2013/12/28 职场文书
青年文明号复核材料
2014/02/11 职场文书
安全演讲稿大全
2014/05/09 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
用python批量解压带密码的压缩包
2021/05/31 Python