Python练习--排序
正在看《Python核心编程》,其中的练习很有意思,其他的python编程书籍只讲内容,完了还要自己想一些练习,学习进度就会放慢,对于我这种完全是靠兴趣来学习的人,也会渐渐失去兴趣。所以一本编程教材需要提供合适的练习。
在第二章有个元素排序的练习:
2–15. 元素排序
(a)让用户输入三个数值并将分别将它们保存到3 个不同的变量中。不使用列表或排序算法,
自己写代码来对这三个数由小到大排序。(b)修改(a)的解决方案,使之从大到小排序
自己实现(b)方法如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def main():
a=float(input('a:'))
b=float(input('b:'))
c=float(input('c:'))
if a>b:
if b>c:
d=(a,b,c)
elif c>a:
d=(c,a,b)
else:
d=(a,c,b)
else :
if c>b:
d=(c,b,a)
elif a<c:
d=(b,c,a)
else:
d=(b,a,c)
print(d)
if __name__ == '__main__':
main()
如果要实现(a),上面的又要改动。索性违规使用元组和排序算法,实现起来简直异常简单。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def main():
a=eval(input('请输入三个数字,用,隔开:'))
print('从小到大排序:',sorted(a))
print('从大到小排序:',sorted(a,reverse=True))
if __name__ == '__main__':
main()
顺便记录一个有用的例子:
>>> a={'port':'8080', 'protocol': 'http', 'address':'202.101.1.22', 'name':'thy', 'pwd':'athy'}
>>> a
{'pwd': 'athy', 'protocol': 'http', 'port': '8080', 'name': 'thy', 'address': '202.101.1.22'}
>>> sorted(a.items(), key=lambda item:item[1])
[('address', '202.101.1.22'), ('port', '8080'), ('pwd', 'athy'), ('protocol', 'http'), ('name', 'thy')]
>>> sorted(a.items(), key=lambda item:item[1],reverse=True)
[('name', 'thy'), ('protocol', 'http'), ('pwd', 'athy'), ('port', '8080'), ('address', '202.101.1.22')]
>>> sorted(a.items(), key=lambda item:item[0])
[('address', '202.101.1.22'), ('name', 'thy'), ('port', '8080'), ('protocol', 'http'), ('pwd', 'athy')]
暂无评论