第八章的习题在这一部分结束

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核心编程》第二版第八章练习题答案 第三部分相关推荐

  1. 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

    目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...

  2. python核心编程第二版pdf_Python Book电子书pdf版合集 Python核心高级编程第二版

    1小时学会Python.doc 51CTO下载-[Python系列].BeginningPythonFromNovicetoProfessionalSecondEdition.pdf 8.Python ...

  3. 《Python核心编程》第二版第八章练习题答案 第二部分

    8–7. 全数. 完全数被定义为这样的数字: 它的约数(不包括它自己)之和为它本身. 例如: 6 的约数是 1, 2, 3, 因为 1 + 2 + 3 = 6 , 所以 6 被认为是一个完全数. 编写 ...

  4. 石头剪刀布python编程_《python核心编程第二版》练习题——游戏:石头剪刀布

    习题里比较有意思的一个题目,实现石头剪刀布这个游戏,起初设计的时候走弯路了(主要时被习题里那个"尽量少用if判断"给整晕了),想的太复杂,后来发现其实非常简单,完全可以不写if语句 ...

  5. python核心编程第二版第一章学习笔记

    一.名字来源 贵铎·范·罗萨姆(Guido van Rossum)于1989 年底始创了Python,那时,他还在荷兰的CWI(Centrum voor Wiskunde en Informatica ...

  6. python语言程序设计基础第二版第七章答案-Python核心编程第二版 第七章课后答案...

    注:我使用的python3.5. 其中range和xrange,input和raw_input已经合并 7-1.字典方法.哪个字典方法可以用来把两个字典合并到一起. dict.update(dict2 ...

  7. 《python核心编程第二版》第5章习题

    5-1 整形 讲讲 Python 普通整型和长整型的区别 答:普通整型 32位,长整数类型能表达的 数值仅仅与你的机器支持的(虚拟)内存大小有关 5-2 运算符 (a) 写一个函数,计算并返回两个数的 ...

  8. Python核心编程第二版 第十三章课后答案

    13-1.程序设计.请列举一些面对对象编程与传统旧的程序设计形式相比的先进之处. 没什么只有OO能做到,OO更多的是给了你一种能力,一种忽略细节的能力:忽略的越多,人类有限的智力就可以容纳越多越复杂的 ...

  9. Python核心编程第二版第五章数字(课后习题)----我的答案

    5-1.整型.讲讲Python普通整型和长整型的区别. 标准整型类型是最通用最基本的数字类型等价于C语言的长整型,一般以十进制表示. 长整型则是标准整型类型的超集,当需要用到比标准整型类型更大的整型时 ...

  10. 《python核心编程第二版》第7章习题

    7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答:dict1.update(dict2) 7–2. 字典的键.我们知道字典的值可以是任意的Python 对象,那字典的键又如何呢?请试 ...

最新文章

  1. java关键字 面试_java面试 关键字
  2. 一起来踩踩 Spring 中这个循环依赖的坑!
  3. SCCM 2012 SP1系列(九)配置补丁更新-2
  4. Golang 学习笔记资源
  5. 我的模块加载系统 v17的入门教程2
  6. python文件和数据的格式化_Python在文本文件中格式化特定数据
  7. 开始学习redhat8,安装redhat8虚拟机
  8. SpringBoot2.X + SpringCache + redis解决乱码问题
  9. 【网络技术题库整理1】局域网技术基础及应用
  10. 单片机c语言 课程设计报告,51单片机课程设计报告.doc
  11. java对接芯烨XP58系列打印机,网络驱动
  12. 信息化系统软件实施工程师基础技能
  13. Python爬虫爬取中国大学慕课MOOC课程的课程评价信息(讨论信息),采用selenium动态爬取方法
  14. (CRON) info (No MTA installed, discarding output)” error in the syslog
  15. 在MacBook Pro上装Mac和Linux双系统
  16. matlab 安装出来封面就没了,基于Matlab的计算报告书封面生成方法及计算机存储介质与流程...
  17. 微信新增「炸屎」表情互动特效,玩上瘾了
  18. BAT不懂工业互联网,树根互联如是说
  19. wordpress博客搭建-保姆教程
  20. 二手书籍交易网站毕业设计,二手书籍买卖平台毕设,二手书籍交易市场平台设计与实现毕业设计论文分析

热门文章

  1. mysql commit慢_MySQL慢日志中COMMIT事件
  2. ajax获得远程html,select2通过AJAX获取远程数据的方法
  3. BZOJ3673/3674:可持久化并查集
  4. ORACLE表空间查看和扩展
  5. Myeclipse的web项目移植到Eclipse中需要添加的包
  6. My Job Exceptation
  7. LeetCode_88、合并两个数组(python)
  8. QLineEdit用正则表达式限制double类型输入,double转为9位小数的字符串
  9. 电大计算机网考辅导,【电大复习资料小抄】2016年12月份电大统考计算机考前辅导电子表格 电大考试必备小抄.doc...
  10. mysql获取当前时间示范,mysql 实时显示当前运行的sql语句