《Python核心编程》第二版第八章练习题答案 第三部分
第八章的习题在这一部分结束
8–12. (整数)位操作. 编写一个程序, 用户给出起始和结束数字后给出一个下面这样的表格,
分别显示出两个数字间所有整数的十进制, 二进制, 八进制和十六进制表示. 如果字符是可打印的
ASCII 字符, 也要把它打印出来, 如果没有一个是可打印字符, 就省略掉 ASCII 那一栏的表头.
解答:
#!/usr/bin/python # -*- coding:utf-8 -*- #Filename:8_12.py ''' Created on 2012-8-14@author: wanglei ''' def output(rangelist):print " DEC BIN OCT HEX"print "-------------------------"for i in rangelist:print "%3s %3s %3s %3s" %(i,bin(i)[2:],oct(i)[1:],hex(i)[2:]) def outputwithascii(rangelist):print " DEC BIN OCT HEX ASCII"print "-----------------------------------"for i in rangelist:print "%3s %3s %3s %3s %3s" %(i,bin(i)[2:],oct(i)[1:],hex(i)[2:],chr(i)) def run():rangelist=[]beg=input("请输入起始数据: ")end=input('请输入结束数据: ')if beg<0 or end<0: #输入的数字不能为负数print "输入的数不能为负数!"sys.exit()if beg<end: rangelist=range(beg,end+1)elif beg>end: #若起始值小于终止值,则进行逆序处理,注意,此处end值要-1rangelist=range(beg,end-1,-1)else:print "两次输入的数相同,请重新输入!"sys.exit()if beg in range(33,127) or end in range(33,127):outputwithascii(rangelist)else:output(rangelist) run()
测试数据:
请输入起始数据: 9 请输入结束数据: 18DEC BIN OCT HEX -------------------------9 1001 11 910 1010 12 a11 1011 13 b12 1100 14 c13 1101 15 d14 1110 16 e15 1111 17 f16 10000 20 1017 10001 21 1118 10010 22 12请输入起始数据: 98 请输入结束数据: 123DEC BIN OCT HEX ASCII -----------------------------------98 1100010 142 62 b99 1100011 143 63 c 100 1100100 144 64 d 101 1100101 145 65 e 102 1100110 146 66 f 103 1100111 147 67 g 104 1101000 150 68 h 105 1101001 151 69 i 106 1101010 152 6a j 107 1101011 153 6b k 108 1101100 154 6c l 109 1101101 155 6d m 110 1101110 156 6e n 111 1101111 157 6f o 112 1110000 160 70 p 113 1110001 161 71 q 114 1110010 162 72 r 115 1110011 163 73 s 116 1110100 164 74 t 117 1110101 165 75 u 118 1110110 166 76 v 119 1110111 167 77 w 120 1111000 170 78 x 121 1111001 171 79 y 122 1111010 172 7a z 123 1111011 173 7b {
写了两个函数,一个输出不带ascii码表的结果,一个输出带ascii码表的结果,程序对用户输入的值进行判断,落在可打印的字符范围则
调用outputwithascii()进行输出,否则调用output()输出
8–13. 程序执行性能. 在 8.5.2 节里, 我们介绍了两种基本的迭代序列方法: (1) 通过序列
项, 以及 (2) 通过序列索引遍历. 该小节的末尾我们指出后一种方法在序列很长的时候性能不佳.
(在我的系统下, 性能差了将近两倍[83%]) 你认为它的原因是什么?
为了验证直接迭代序列要比索引迭代快,我写了一小段代码来测试:
#!/usr/bin/python # -*- coding:utf-8 -*- #Filename:8_13.py ''' Created on 2012-8-14@author: wanglei ''' import time def compare():strtime=time.clock()alist=range(1000000)for i in range(len(alist)):print alist[i],#for i in alist:# print i,endtime=time.clock()print "运行时间: ",(endtime-strtime) compare()
输出结果:
运行时间: 27.7364464237 运行时间: 35.151471639
结果竟然是通过索引运行时间更短一些,这个问题后面再研究一下,后续补上相关思考
转载于:https://www.cnblogs.com/hello--the-world/archive/2012/08/14/2638323.html
《Python核心编程》第二版第八章练习题答案 第三部分相关推荐
- 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录
目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...
- python核心编程第二版pdf_Python Book电子书pdf版合集 Python核心高级编程第二版
1小时学会Python.doc 51CTO下载-[Python系列].BeginningPythonFromNovicetoProfessionalSecondEdition.pdf 8.Python ...
- 《Python核心编程》第二版第八章练习题答案 第二部分
8–7. 全数. 完全数被定义为这样的数字: 它的约数(不包括它自己)之和为它本身. 例如: 6 的约数是 1, 2, 3, 因为 1 + 2 + 3 = 6 , 所以 6 被认为是一个完全数. 编写 ...
- 石头剪刀布python编程_《python核心编程第二版》练习题——游戏:石头剪刀布
习题里比较有意思的一个题目,实现石头剪刀布这个游戏,起初设计的时候走弯路了(主要时被习题里那个"尽量少用if判断"给整晕了),想的太复杂,后来发现其实非常简单,完全可以不写if语句 ...
- python核心编程第二版第一章学习笔记
一.名字来源 贵铎·范·罗萨姆(Guido van Rossum)于1989 年底始创了Python,那时,他还在荷兰的CWI(Centrum voor Wiskunde en Informatica ...
- python语言程序设计基础第二版第七章答案-Python核心编程第二版 第七章课后答案...
注:我使用的python3.5. 其中range和xrange,input和raw_input已经合并 7-1.字典方法.哪个字典方法可以用来把两个字典合并到一起. dict.update(dict2 ...
- 《python核心编程第二版》第5章习题
5-1 整形 讲讲 Python 普通整型和长整型的区别 答:普通整型 32位,长整数类型能表达的 数值仅仅与你的机器支持的(虚拟)内存大小有关 5-2 运算符 (a) 写一个函数,计算并返回两个数的 ...
- Python核心编程第二版 第十三章课后答案
13-1.程序设计.请列举一些面对对象编程与传统旧的程序设计形式相比的先进之处. 没什么只有OO能做到,OO更多的是给了你一种能力,一种忽略细节的能力:忽略的越多,人类有限的智力就可以容纳越多越复杂的 ...
- Python核心编程第二版第五章数字(课后习题)----我的答案
5-1.整型.讲讲Python普通整型和长整型的区别. 标准整型类型是最通用最基本的数字类型等价于C语言的长整型,一般以十进制表示. 长整型则是标准整型类型的超集,当需要用到比标准整型类型更大的整型时 ...
- 《python核心编程第二版》第7章习题
7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答:dict1.update(dict2) 7–2. 字典的键.我们知道字典的值可以是任意的Python 对象,那字典的键又如何呢?请试 ...
最新文章
- java关键字 面试_java面试 关键字
- 一起来踩踩 Spring 中这个循环依赖的坑!
- SCCM 2012 SP1系列(九)配置补丁更新-2
- Golang 学习笔记资源
- 我的模块加载系统 v17的入门教程2
- python文件和数据的格式化_Python在文本文件中格式化特定数据
- 开始学习redhat8,安装redhat8虚拟机
- SpringBoot2.X + SpringCache + redis解决乱码问题
- 【网络技术题库整理1】局域网技术基础及应用
- 单片机c语言 课程设计报告,51单片机课程设计报告.doc
- java对接芯烨XP58系列打印机,网络驱动
- 信息化系统软件实施工程师基础技能
- Python爬虫爬取中国大学慕课MOOC课程的课程评价信息(讨论信息),采用selenium动态爬取方法
- (CRON) info (No MTA installed, discarding output)” error in the syslog
- 在MacBook Pro上装Mac和Linux双系统
- matlab 安装出来封面就没了,基于Matlab的计算报告书封面生成方法及计算机存储介质与流程...
- 微信新增「炸屎」表情互动特效,玩上瘾了
- BAT不懂工业互联网,树根互联如是说
- wordpress博客搭建-保姆教程
- 二手书籍交易网站毕业设计,二手书籍买卖平台毕设,二手书籍交易市场平台设计与实现毕业设计论文分析
热门文章
- mysql commit慢_MySQL慢日志中COMMIT事件
- ajax获得远程html,select2通过AJAX获取远程数据的方法
- BZOJ3673/3674:可持久化并查集
- ORACLE表空间查看和扩展
- Myeclipse的web项目移植到Eclipse中需要添加的包
- My Job Exceptation
- LeetCode_88、合并两个数组(python)
- QLineEdit用正则表达式限制double类型输入,double转为9位小数的字符串
- 电大计算机网考辅导,【电大复习资料小抄】2016年12月份电大统考计算机考前辅导电子表格 电大考试必备小抄.doc...
- mysql获取当前时间示范,mysql 实时显示当前运行的sql语句