Python 练习实例5
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:这道题可谓是经典,学习其他语言时都遇到过,一上来我也是照着C、C++的思维用循环一个一个比较,后来看了网上的案例发现原来Python自带sort和sorted函数,能够将list以升序降序输出,代码精简的很多。
方法一:个人方法,利用循环判断x,y,z的大小。
代码如下:
x=input('x=\n') y=input('y=\n') z=input('z=\n') if(x>y): if(y>z): print "min=",z else: print 'min=',y else: if(x>z): print 'min=',z else: print 'min=',x
感觉就是换了层皮的C++代码。毫无一点Python特色。
方法二:利用sort和sorted函数。sort函数是将list里的数据按照顺序排列,sorted函数是将原来list排序后复制给一个新的list,而不改变原来list的值。
代码如下:
l=[] for i in range(3): x=int(raw_input('integer:\n')) l.append(x) x=l[:] y=sorted(l) l.sort() print l print x print y
代码不仅精炼了许多,而且运行时间也缩短了。
方法三:利用sort函数、key函数和lambda表达式,将条件整合成一行,更加精炼。key函数是自定义函数,它只能接受一个值;lambda表达式相当于C++的选择表达式,格式:key=lambda x:x[1],分号左边是元素,可以有多个,分号右边是返回值,可以为一个计算表达式。
代码如下:
d={1:'z',2:'y',3:'x'} print sorted(d.items(),key=lambda x:x[1])
由此可见Python的功能之强大。