鱼C论坛

 找回密码
 立即注册
查看: 2061|回复: 0

[技术交流] 《零基础Python》习题笔记(4)——第15讲代码对比

[复制链接]
发表于 2017-8-25 09:59:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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))

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 10:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表