我在面试前,面试公司发来一道python题,我觉得还挺有意思的。题目如下。"""
“”"
我们知道 2 进制数字由 2 种字符(01)组成,10 进制数字由 10 种字符(0123456789)组成,16 进制由 16 种字符(0123456789ABCDEF)。不同进制的数字之间可以相互转换。

我们定义一种 “十二地支进制” 数字,这种数字由中国古代地支的 12 种字符(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)组成。“十二地支进制” 数字和 10 进制数字的关系可以看下面的代码。

 [["子", 0],["丑", 1],["寅", 2],["卯", 3],["辰", 4],["巳", 5],["午", 6],["未", 7],["申", 8],["酉", 9],["戌", 10],["亥", 11],["丑子", 12],["丑丑", 13],["丑寅", 14],["丑卯", 15],["丑寅子卯", 2019],]

请实现 10 进制数字和 “十二地支进制” 数字之间的转换函数。不需要考虑负数。
“”"
这道题的本质就是十进制转十二进制。跟十进制转十六进制或者八进制原理一样。十进制转二进制是“除二倒取余数法”如下图:

与之类似,十二进制是除以十六。

十六进制转十进制的转换方式是“加权求和法”,如下图:

图中的十六进制数应为:713。转换后的十进制为125。

十二进制转换十进制的方法类似。十二进制是12的N次方。
在已知上述的转换方式后,该问题就解决了一大半。只需要转换为对应的“地支”数。

python代码如下:

 a = 2019#给定十进制数如b = []init_10 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]dizhi1 = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]int_to_dizhi = dict(zip(init_10, dizhi1))#地支对应的十进制字典
#十进制转换为地支if a >= 12:#判断是否大于12?小于12直接转换为对应地支。if a // 12 >= 12:
#整除12是否大于12?小于12只做一次除12,大于12会多次除以12。while (a >= 12):c = a % 12  # 获得余数a = a // 12  # 循环除b.append(c)b.append(a)else:b.append(a % 12)#只做一次除12取余数b.append(a // 12)else:b.append(a)ccc=[]#输出b.reverse()#列表左右翻转for i in b:ccc.append(int_to_dizhi[i])#将十进制转换为对应的“地支”return ccc

地支进制转十进制:

init_10 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]dizhi1 = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]int_to_dizhi = dict(zip(dizhi1, init_10))d = ""#给定的地支如dizhi: strd.split()#字符串分割z = []l = len(d)#地支转换成十进制for i in list(d):z.append(int_to_dizhi[i])ten = 0for i, j in enumerate(z, start=0):ten = ten + j * 12 ** (l - i - 1)print(i, j)print(ten)return ten

或许不是最简单的,不过思路应该是清晰的。

使用python编写十二进制与十进制转换程序相关推荐

  1. python编写一个将十进制转换为二进制的函数

    1.具体做法: 十进制整数转换为二进制整数采用"除2取余,逆序排列"法.具体做法是:用2整除十进制整数,可以得到一个商和余数:再用2去除商,又会得到一个商和余数,如此进行,直到商为 ...

  2. python程序-30分钟学会用Python编写简单程序

    原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...

  3. python写软件实例-30分钟学会用Python编写简单程序

    原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...

  4. Python编程:实现十进制转八进制的算法及完整源代码

    Python编程:实现十进制转八进制的算法及完整源代码 在计算机科学中,我们通常会遇到需要将十进制数转换为其他进制的情况,在此我们以八进制为例,介绍如何使用Python代码实现将十进制数转换为八进制数 ...

  5. 1-2 用Python编写【房价预测】模型----paddle

    课程>我的课程>百度架构师手把手教深度学习>1-2 用Python编写[房价预测]模型> 1-2 用Python编写[房价预测]模型 paddle初级教程第一章 第二节 王然( ...

  6. python怎么编程乘法口诀表_用python编写乘法口诀表的方法

    用python编写乘法口诀表的方法 发布时间:2020-08-25 11:46:35 来源:亿速云 阅读:60 作者:小新 用python编写乘法口诀表的方法?这个问题可能是我们日常学习或工作经常见到 ...

  7. python编写脚本方法_【Python】教你一步步编写banner获取脚本

    Hello 各位小伙伴们大家好,周末过的愉快吗? 刚好最近学习了使用python编写banner获取脚本,今天就跟大家一起一步一步再学习一遍吧. Part.1 说明篇 什么是banner? banne ...

  8. Python编写循环的两个建议 | 鹅厂实战

    作者 | piglei(腾讯高级工程师) 转载自腾讯技术工程知乎专栏 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而" ...

  9. python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)

    python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...

  10. 用python写脚本筛选原创微博_基于python编写的微博应用

    本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...

最新文章

  1. 2021美国科学天才奖发榜!16名华裔高中生入围「少年诺奖」
  2. python生成xml文件工具_Python根据指定文件生成XML的方法
  3. java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...
  4. XCode7 创建framework
  5. html表格ui,table表格 - 基础 - H-ui前端框架官方网站
  6. 日志,错误日志,成功日志,日志是个好东西。
  7. 弹层,iframe页面
  8. 071120 sunny
  9. 第10章 分离并纠正物理层和数据链路层故障
  10. ubunt18 mysql_Ubuntu18.04下安装MySQL教程
  11. 在IIS管理器添加网站
  12. 开始时间 结束时间,全程的运行时间的计算
  13. 《编译与反编译技术》—第3章3.1语 法 分 析
  14. c语言课程设计文献检索,文献检索课学习心得三篇(2)
  15. 固态硬盘在线测试软件,ssd测试软件,详细教您ssd测试软件
  16. win10系统dns错误如何解决【系统天地】
  17. 192本软件著作用词分析(二)
  18. 转本结束暑假2022.6.29-7.13我的深圳之行(体验)
  19. 智能安防监控系统的发展与应用
  20. Android FaceBook sdk 登录接入

热门文章

  1. 第二次作业,问卷星的使用
  2. c语言求定积分的程序,C语言求定积分
  3. 蓝蓝的天空上飘着白云,白云的下面藏着雪白的羊群 ---- 刘烨
  4. 苹果如何将图片转换为文字手机
  5. SAS 学习笔记 (一) — SAS简介
  6. 西餐菜单怎么翻译成英文
  7. DOS命令批量更改文件名称(含空格等)
  8. ROS激光雷达小车自主导航学习(一)(持续更新中)
  9. Cf#595 (Div. 3)D-贪心
  10. 职场领导想逼你走时,他会用哪些奇招逼你走?