注:本代码是《python核心编程(第二版)》的第八章8-12的练习题的代码实现。

完成的功能:用户给出起始和结束的数字后给出一个下面的表格,分别显示出两个数字间所有整型的十进制、二进制、八进制及十六进制。如果字符是可打印的ASCLL符,也要打印出来。如果没有一个是可打印的字符,则省略掉ASCLL那一栏的表头。

代码实现如下:

 def format_print(start_index, end_index):
seq = range(start_index, end_index + 1)
title = "DEC\tBIN\t\tOCT\tHEX"
if (end_index >=32 and end_index <=126):
title = "DEC\tBIN\t\tOCT\tHEX\tASCLL"
print title
print "--------------------------------------------"
for item in seq:
if item >= 32 and item <= 126:
print "%d\t%07d\t\t%o\t%x\t%s" % (item, int(bin(item)[2:]), item, item, chr(item))
else:
print "%d\t%07d\t\t%o\t%x" % (item, int(bin(item)[2:]), item, item)
print '--------------------------------------------' def showmenu():
prompt1 = 'enter start index, (Q)uit:'
prompt2 = 'enter end index, (Q)uit:'
while True:
start_index = raw_input(prompt1).strip().lower()
if start_index == 'q':
break
if not start_index.isdigit():
print "Error! wrong format!"
continue
else:
start_index = int(start_index) end_index = raw_input(prompt2).strip().lower()
if end_index == 'q':
break
if not end_index.isdigit():
print "Error! wrong format!"
continue
else:
end_index = int(end_index) if (start_index >= end_index):
continue
format_print(start_index, end_index) if __name__ == '__main__':
showmenu()

测试结果如下:

 enter start index, (Q)uit:9
enter end index, (Q)uit:18
DEC BIN OCT HEX
--------------------------------------------
9 0001001 11 9
10 0001010 12 a
11 0001011 13 b
12 0001100 14 c
13 0001101 15 d
14 0001110 16 e
15 0001111 17 f
16 0010000 20 10
17 0010001 21 11
18 0010010 22 12
--------------------------------------------
enter start index, (Q)uit:26
enter end index, (Q)uit:41
DEC BIN OCT HEX ASCLL
--------------------------------------------
26 0011010 32 1a
27 0011011 33 1b
28 0011100 34 1c
29 0011101 35 1d
30 0011110 36 1e
31 0011111 37 1f
32 0100000 40 20
33 0100001 41 21 !
34 0100010 42 22 "
35 0100011 43 23 #
36 0100100 44 24 $
37 0100101 45 25 %
38 0100110 46 26 &
39 0100111 47 27 '
40 0101000 50 28 (
41 0101001 51 29 )
--------------------------------------------
enter start index, (Q)uit:

python练习-8.12的更多相关文章

  1. 【转】Centos升级Python 2.7.12并安装pip、ipython

    Centos系统一般默认就安装有Python2.6.6版本,不少软件需要2.7以上的,通过包管理工具安装不了最新的版本,通过源码编译可以方便安装指定版本,只需要把下面版本的数字换成你想要的版本号. 1 ...

  2. python入门(12)dict

    python入门(12)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例 ...

  3. Python高级特性: 12步轻松搞定Python装饰器

    12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则:  http://python.jobbole.com/84151/   基本上一开始很难搞定python的装 ...

  4. supperset (python 2.7.12 + mysql)记录

    网上看到superset,比较感兴趣,虚机上搭一下,记录操作过程. 版本信息:CentOS 6.6 + python 2.7.12 + mysql 5.1.73 + setuptools 36.5.0 ...

  5. Python Cookbook 笔记--12章并发编程

    <Python Cookbook(第3版)中文版> 1.队列queue的有些方法是线程不安全的,在多线程中最好别用 2.需要限制一段代码的并发访问量时,用信号量.不要把信号量当做普通的锁来 ...

  6. python学习笔记12 ----线程、进程

    进程和线程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进程里的 ...

  7. Python学习(12)日期和时间

    目录 Python 日期和时间 时间元组 获取当前时间 获取格式化时间 格式化日历 获取某月日历 Time模块 日历模块 其他相关模块和函数 Python 日期和时间 Python 程序能用很多方式处 ...

  8. Python得到前面12个月的数据,Python得到现在时间 前一年的数据,

    #Python 实现得到现在时间12个月前的每个月 # 假设现在的时间是2016年9月25日 #得到现在的时间 得到now等于2016年9月25日 now = datetime.datetime.no ...

  9. 我的Python成长之路---第三天---Python基础(12)---2016年1月16日(雾霾)

    四.函数 日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现.在编程的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代 ...

  10. python自学第12天 模块定义,导入,内置模块

    1.定义模块:用来从逻辑上组织python代码(实现一个功能),本质是.py结尾的python 包:本质就是一个目录(必须带有一个_init_.py文件)2.导入方法import module_nam ...

随机推荐

  1. 个人脚手架搭建 -- charmingsong-cli

    个人脚手架搭建 -- charmingsong-cli 目的 为了解决多次构建相同功能的项目,在一定程度上需要定制化以及私有化设置 设计 问题 为什么不用现成的脚手架生成? 如果利用vue或者reac ...

  2. jekyll 在博客添加流程图

    本文告诉大家如何在博客使用流程图. 如果你使用的是我博客的模板,那么就可以直接使用我说的文件,如果是自己的主题,就需要在自己文件对应的地方加上代码. 在我的博客里,需要添加下面的js到博客,可以打开 ...

  3. ffmpeg 转码并截图的命令分析

    一.转码并截图的命令分析: 1.转码并截图,将码率转换为900Kffmpeg -i E:\\1.MOV -i E:\\123.jpg -filter_complex overlay=W-w  -b:v ...

  4. 数据预处理以及探索性分析(EDA)

    1.根据某个列进行groupby,判断是否存在重复列. # Count the unique variables (if we got different weight values, # for e ...

  5. 第二阶段:2.商业需求分析及BRD:4.产品需求分析总结

    产品的需求筛选 战略定位要考虑公司的战略问题.产品定位要分阶段,各个阶段的需求不同. 其实现在需求分析跟筛选都是非常快的. 不把需要当成需求,意思就是不要用户说需要什么就是什么,用户需要引导. 先分类 ...

  6. python知识点总结01(不定时更新)

    手写一个完整的装饰器模版 # 用于修复被装饰对象的名称空间 from functools import wrape def wrapper(func): @wraps(func) def inner( ...

  7. 只用这 6 个字符,就可以写出任意 JavaScript 代码!

    你可能在网上见过有人用 几个不同的字符写的各种稀奇古怪的 JavaScript 代码,虽然看起来奇怪,但是能正常运行!比如这个: (!(~+[])+{})[--[~+""][+[] ...

  8. leetcode.199二叉树的右视图

    给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <-- ...

  9. 1046 划拳 (15 分)C语言

    划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒.两人同赢或两人同输 ...

  10. 结合docker发布后端项目(基于gradle包管理)的shell脚本

    结合docker发布后端项目(基于gradle包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理) 目前主流的 ...