马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第15讲习题地址:http://bbs.fishc.com/thread-40789-1-1.html
题目要求我们编写一个自动打印进制转换的程序
小甲鱼老师的程序是这样子的:q = True
while q:
num = input('请输入一个整数(输入Q结束程序):')
if num != 'Q':
num = int(num)
print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
print('十进制 -> 二进制 : %d -> ' % num, bin(num))
else:
q = False
而我的程序是这样子的:while 1:
temp = input('请输入一个整数(输入Q结束程序):')
if temp == 'Q':
break
else:
num = int(temp)
print('十进制 -> 十六进制:' + temp + '-> {0}'.format('%#x' % num))
print('十进制 -> 八进制:' + temp + '-> {0}'.format('%#o' % num))
print('十进制 -> 二进制:' + temp + '-> {0}'.format(bin(num)))
通过对比,我发现,在对循环的处理上,我的程序比较简洁
而格式化的处理上,小甲鱼的程序更为优秀
两种格式化对比:
1. format格式化:'a{0}b{1}c'.format(%[格式] %num1,%[格式] %num2 ),
该方法format前只包含了位置替换信息,若想更改格式,还需在后面加入格式信息
2. %格式化:'a%[格式]b%[格式]c'%(num1,num2)
该方法%前既包含位置信息又包含格式信息,使代码更加简洁
另外十六进制前面显示0x的处理,
小甲鱼是 '0x%x'
我是'%#x'
结合两者优势,我总结出一套较为完美的代码:while 1:
num = input('请输入一个整数(输入Q结束程序):')
if num == 'Q':
break
else:
num = int(num)
print('十进制 -> 十六进制 : %d -> %#x' % (num, num))
print('十进制 -> 八进制 : %d -> %#o' % (num, num))
print('十进制 -> 二进制 : %d ->' % num, bin(num))
|