注:本代码是《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. Javascript 防扒站,防止镜像网站

    自己没日没夜敲出来的站,稍微漂亮一点,被人看上了就难逃一扒,扒站是难免的,但不能让他轻轻松松就扒了: 前些天有个朋友做的官网被某不法网站镜像,严重影响到 SEO,当时的解决方法是通过屏蔽目标 IP 来 ...

  2. dotnet 使用 System.CommandLine 写命令行程序

    在写命令行程序的时候,会遇到命令行解析的问题,以及参数的使用和规范化等坑.现在社区开源了命令行项目,可以帮助小伙伴快速开发命令行程序,支持自动的命令行解析和规范的参数 我写过一篇关于命令行解析的博客C ...

  3. [板子]快速幂&矩阵快速幂

    不会的来这看:https://www.cnblogs.com/CXCXCXC/p/4641812.html 简单的一说:当转换为二进制的时候有位运算这种黑科技,&相当于%2判断奇偶性. x&a ...

  4. 开发API整理(转)

    附送一个 android 源码 查看地址 http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android ...

  5. 深入学习CSS中如何使用定位

    CSS中定位介绍 position属性在英文单词中表示位置的意思,在CSS中主要作用设置元素的定位. CSS中一共有3种定位如下: 属性值 描述 fixed 设置固定定位. relative 设置相对 ...

  6. RecursiveTask和RecursiveAction的使用总结

    一:什么是Fork/Join框架    Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架.我们再通 ...

  7. Web基础了解版10-Filter-Listener

    Filter 对于WEB应用来说,过滤器是一个驻留在服务器中的WEB组件,他可以截取客户端和WEB资源之间的请求和响应信息. 在一个WEB应用中可以部署多个过滤器,多个过滤器就组成了一个过滤器链,请求 ...

  8. Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

    redis 主要有以下几种数据类型: string hash list set sorted set string 这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存. set c ...

  9. The second day of Crawler learning

    用BeatuifulSoup和Requests爬取猫途鹰网 服务器与本地的交换机制 我们每次浏览网页都是再向网页所在的服务器发送一个Request,然后服务器接受到Request后返回Response ...

  10. TemplateMethodPattern(模板方法模式)-----Java/.Net

    一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行.这种类型的设计模式属于行为型模式