基于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获取电脑硬件信息及状态的实现方法
Aug 29 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
python中树与树的表示知识点总结
Sep 14 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
python 有效的括号的实现代码示例
Nov 11 Python
python实现批量修改文件名
Mar 23 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
selenium自动化测试入门实战
Dec 21 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 Python
Python环境搭建过程从安装到Hello World
Feb 05 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 Python
python lambda 表达式形式分析
Apr 03 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
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
如何在PHP中生成随机数
2020/06/04 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
Javascript调用C#代码
2011/01/17 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
Python的Flask框架的简介和安装方法
2015/11/13 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
工厂厂长岗位职责
2013/11/08 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
出国考察邀请函
2014/01/21 职场文书
公司人事管理制度
2015/08/05 职场文书
聘任书范文大全
2015/09/21 职场文书
python 标准库原理与用法详解之os.path篇
2021/10/24 Python
JS实现简单的九宫格抽奖
2022/06/28 Javascript