编写一个程序,用户给出起始和结束数字后,输出一下内容,显示出两个数字之间所有整形的十进制,二进制,八进制和十六进制表示。如果字符时可以打印的ASCII字符,者要打印出来,如果没有一个是可以打印字符,就省略ASCII那一栏
'''
小e
输出一定范围内字符的不同表示
'''
import string
from string import Template
def numberPrint(start,end):
if chr(end) in string.printable:#判断字符时候是可打印的,根据不同情况创建不同的字符串模板
title = 'DEC\tBIN\tOCT\tHEX\tASCII'
ascState = True
t = Template("${decS}\t${binS}\t${octS}\t${hexS}\t${ascS}")
else:
title = 'DEC\tBIN\tOCT\tHEX'
ascState = False
t = Template("${decS}\t${binS}\t${octS}\t${hexS}")
print(title + '\n' + '-'*50)
print(ascState)
print('start:%d\tend:%d'%(start, end))
for i in range(start,end):
if ascState:
print(t.substitute(decS = i,binS = bin(i),octS = oct(i),hexS = hex(i),ascS = chr(i)))
else:
print(t.substitute(decS = i,binS = bin(i),octS = oct(i),hexS = hex(i)))
def show():
print('输入起始值和结束值,输出区间内每个数的不同表示')
while True:
start = int(input('起始值:').strip())
end = int(input('结束值:').strip())
if start == end and end == 0:
break
if start > end:
print('输入有误')
continue
print('start:%d\tend:%d'%(start, end))
numberPrint(start,end)
if __name__ == '__main__':
show()
Output:
输入起始值和结束值,输出区间内每个数的不同表示
起始值:1
结束值:20
start:1 end:20
DEC BIN OCT HEX
--------------------------------------------------
False
start:1 end:20
1 0b1 0o1 0x1
2 0b10 0o2 0x2
3 0b11 0o3 0x3
4 0b100 0o4 0x4
5 0b101 0o5 0x5
6 0b110 0o6 0x6
7 0b111 0o7 0x7
8 0b1000 0o10 0x8
9 0b1001 0o11 0x9
10 0b1010 0o12 0xa
11 0b1011 0o13 0xb
12 0b1100 0o14 0xc
13 0b1101 0o15 0xd
14 0b1110 0o16 0xe
15 0b1111 0o17 0xf
16 0b10000 0o20 0x10
17 0b10001 0o21 0x11
18 0b10010 0o22 0x12
19 0b10011 0o23 0x13
起始值:60
结束值:80
start:60 end:80
DEC BIN OCT HEX ASCII
--------------------------------------------------
True
start:60 end:80
60 0b111100 0o74 0x3c <
61 0b111101 0o75 0x3d =
62 0b111110 0o76 0x3e >
63 0b111111 0o77 0x3f ?
64 0b1000000 0o100 0x40 @
65 0b1000001 0o101 0x41 A
66 0b1000010 0o102 0x42 B
67 0b1000011 0o103 0x43 C
68 0b1000100 0o104 0x44 D
69 0b1000101 0o105 0x45 E
70 0b1000110 0o106 0x46 F
71 0b1000111 0o107 0x47 G
72 0b1001000 0o110 0x48 H
73 0b1001001 0o111 0x49 I
74 0b1001010 0o112 0x4a J
75 0b1001011 0o113 0x4b K
76 0b1001100 0o114 0x4c L
77 0b1001101 0o115 0x4d M
78 0b1001110 0o116 0x4e N
79 0b1001111 0o117 0x4f O
起始值: