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

Published by 阿飞 on
Tags: python, 练习, 排序

暂无评论