<Python核心编程>中的题目:
8-12(整数)位操作.编写一个程序,它在由用户输入法开始结束数字后给出一个下面这样的表格,
分别显示出两个数字之间所有数字的十进制,二进制,八进制,十六进制表示形式.若字符是可打印的ASCII字符,
也要把它们打印出来;若不是可打印ASCII字符,就略掉ASCII那一栏的标题.
二进制形式可用 bin(number)表示,例如bin(10),输出:0x1010.则可用replace('0b','')来替换掉'0x'.完整式为: %s,% (bin(number).replace('0b',''))
八进制形式为 %o
十六进制形式为 %x
ASCII形式为 %s, 然后用chr(num)表示
若要判断是否为可打印的ASCII字符
则可改为:
for i in lis:
if i<33:
jinZhiA(i)
else:
jinZhiB(i)
---------------------------------------完整代码如下————————————————————————
#coding=utf-8
''' 由用户输入开始和结束数字后给出一个表格,
以演示输出两个数字的十进制,二进制,八进制,十六进制表示形式.
'''
def jinZhiA(num):
print '%d\t%s\t%o\t%x\t' %(num,bin(num).replace('0b',''),num,num)
def jinZhiB(num):
print '%d\t%s\t%o\t%x\t%s\t' %(num,bin(num).replace('0b',''),num,num,chr(num))
if __name__ == '__main__':
print 'SAMPLE OUTPUT1:'
print '---------------'
ibegin = input('Enter begin value:')
iend = input('Enter end value:')
print 'DEC\tBIN\tOCT\tHEX\t'
print '----------------------------'
lis=[ i for i in range(ibegin,iend+1)]
for i in lis:
jinZhiA(i)
print 'SAMPLE OUTPUT2'
print '--------------'
ibegin = input('Enter begin value:')
iend = input('Enter end value:')
print 'DEC\tBin\tOCT\tHEX\tASCII\t'
print '-------------------------------------'
lis = [ ]
lis = [ i for i in range(ibegin,iend+1)]
for i in lis:
jinZhiB(i)
#若要判断是否为可打印的ASCII字符
#则可改为:
#for i in lis:
# if i<33:
# jinZhiA(i)
# else:
# jinZhiB(i)
import os
print '\nGET THE SIZE OF <JinZhe.py> IS :',os.path.getsize('JinZhe.py')