使用python编写十二进制与十进制转换程序
我在面试前,面试公司发来一道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编写十二进制与十进制转换程序相关推荐
- python编写一个将十进制转换为二进制的函数
1.具体做法: 十进制整数转换为二进制整数采用"除2取余,逆序排列"法.具体做法是:用2整除十进制整数,可以得到一个商和余数:再用2去除商,又会得到一个商和余数,如此进行,直到商为 ...
- python程序-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- python写软件实例-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- Python编程:实现十进制转八进制的算法及完整源代码
Python编程:实现十进制转八进制的算法及完整源代码 在计算机科学中,我们通常会遇到需要将十进制数转换为其他进制的情况,在此我们以八进制为例,介绍如何使用Python代码实现将十进制数转换为八进制数 ...
- 1-2 用Python编写【房价预测】模型----paddle
课程>我的课程>百度架构师手把手教深度学习>1-2 用Python编写[房价预测]模型> 1-2 用Python编写[房价预测]模型 paddle初级教程第一章 第二节 王然( ...
- python怎么编程乘法口诀表_用python编写乘法口诀表的方法
用python编写乘法口诀表的方法 发布时间:2020-08-25 11:46:35 来源:亿速云 阅读:60 作者:小新 用python编写乘法口诀表的方法?这个问题可能是我们日常学习或工作经常见到 ...
- python编写脚本方法_【Python】教你一步步编写banner获取脚本
Hello 各位小伙伴们大家好,周末过的愉快吗? 刚好最近学习了使用python编写banner获取脚本,今天就跟大家一起一步一步再学习一遍吧. Part.1 说明篇 什么是banner? banne ...
- Python编写循环的两个建议 | 鹅厂实战
作者 | piglei(腾讯高级工程师) 转载自腾讯技术工程知乎专栏 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而" ...
- python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)
python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...
- 用python写脚本筛选原创微博_基于python编写的微博应用
本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...
最新文章
- 2021美国科学天才奖发榜!16名华裔高中生入围「少年诺奖」
- python生成xml文件工具_Python根据指定文件生成XML的方法
- java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...
- XCode7 创建framework
- html表格ui,table表格 - 基础 - H-ui前端框架官方网站
- 日志,错误日志,成功日志,日志是个好东西。
- 弹层,iframe页面
- 071120 sunny
- 第10章 分离并纠正物理层和数据链路层故障
- ubunt18 mysql_Ubuntu18.04下安装MySQL教程
- 在IIS管理器添加网站
- 开始时间 结束时间,全程的运行时间的计算
- 《编译与反编译技术》—第3章3.1语 法 分 析
- c语言课程设计文献检索,文献检索课学习心得三篇(2)
- 固态硬盘在线测试软件,ssd测试软件,详细教您ssd测试软件
- win10系统dns错误如何解决【系统天地】
- 192本软件著作用词分析(二)
- 转本结束暑假2022.6.29-7.13我的深圳之行(体验)
- 智能安防监控系统的发展与应用
- Android FaceBook sdk 登录接入