Python 的内置函数max() min()

       先pose出例题:输入三个整数x,y,z,请把这三个数由小到大输出。

这种题目,由大到小(或这由小到大),万精油的方法就是先排序。嗯,我都排好顺序了,谁大谁小一看便知。这个题只有3个数,好排。(若数目过多,这样排序就不是最好方法)。即便是3个数字,我也依然懒得排序,秉承Python简洁之道, 我就想到Python的内置函数max,min。对,就三个数,去掉一个最大值,去掉一个最小值。剩下的不就是老二吗?于是开始写代码了       

x = input("please input x:\n")
y = input("please input y:\n")
z = input("please input z:\n")
L =[]
L.append(x)
L.append(y)
L.append(z)
v1=min(L)
v2 = max(L)

最大值跟最小值很容易就用max() 和min()函数找出,但是第三个怎么找。很简单,第三个数不就是剩下的那个数吗?嗯,是 。但是v1,v2 是 x,y ,z中的哪两个也不知道啊,又如何确定谁是第三个数。比最大值小比最小值大不就是吗?恩,是的,莫非又要回到排序?另谋他法,看能不能把第三个数个单独挑出来(甚至用了pop()函数,结果错了,Python好多函数,容易记错,附上Python3内置函数的官方文档https://docs.python.org/3/library/functions.html#max

于是,对代码进行了修改

x = input("please input x:\n")
y = input("please input y:\n")
z = input("please input z:\n")
L =[]
L.append(x)
L.append(y)
L.append(z)
v1=min(L)
v2 = max(L)
########
L1 =[v1,v2]
for i in L:
	if i not in L1:
		v3 = i
print(v1+ "<" + v3 +"<" + v2)

这样就成功的筛出了中间那个数,于是比较完成。输入验证,都对了。

其实,Python的内置函数remove()也可以完成对元素的去除

x = input("please input x:\n")
y = input("please input y:\n")
z = input("please input z:\n")
L =[]
L.append(x)
L.append(y)
L.append(z)
v1=min(L)
v2 = max(L)
#
L.remove(v1)
L.remove(v2)
########
v3 =L[0]
print(v1 + "<" + v3 +"<" + v2)

就在我准备跳过这段代码时,我脑子一热,想试试负数能不能满足:于是输入 -2,-3,-4 做个小测



恩,恩,不错。what?这排序是不是有点不对劲。再三测了一遍还是如此,我的天,难道是我记错了。-2<-4,不会啊。莫非官方的内置函数没有考虑负数,天啊,我要发现一个漏洞了。也没有相关的博客说这些,所以老老实实用max(),min() 测了一次

L=[-2,-3,-4]
print(max(L))
print(min(L))

得到最大值是-2,最小值是-4。得到这个我都感觉自己宛如智障,官方怎么可能有这么低级的错误。但我不知如何修改我的代码,最大值,最小值,中间值都分离了,为什么排错了呢?

我是入门水平,仅此记录自己的逗比学习经历。


猜你喜欢

转载自blog.csdn.net/jobbaba/article/details/80867939