对"用Python比较三个数大小的方法"的纠错

初学Python,会遇到各种各样的问题,小编也是在这样的过程中成长起来的。

以上是我想说的第一句话,那么对于我的上一句话,有两点需要声明:

1.『小编』这个称谓:第一次写文章,实在不知道从哪开始,只是之前看到大家都自称"小编",所以,觉得这是一个普遍的称谓吧。

2.『成长』这个词汇:其实对于Python的应用,我也是在探索的路上艰难前行,完全没达到敢用"成长"这个词的地步,共同努力。

啰嗦完毕,进入正题。

###############################

学习任何一门编程语言,使用任何一门语言进行编程,想要实现一个功能或是解决一个问题,方法都不止一个,这是恒不变的规律。

那么,每次遇到问题的时候,我都会查阅几种方法进行对比,然后择其优者而从之,尽管多数都需要改动才能用,但人家的方法总之给了你灵感或点化的作用。

所以,在解决问题的过程中,一定要有自己的判断。

###############################

小编在一次解决问题的过程中,遇到了比较三个数大小的问题,然后在探索的过程中,在网上发现一个方法,而且赞同的人还挺多的,但反复梳理它的流程,发现总是有些问题,然后拿来经过数据验证,找出了一些问题,下面直接上代码。

一。引用的方法:

def max_min(x, y, z):
    max = min = x
    if y > max:
        max = y
    else:
        min = y
    if z > max:
        max = z
    else:
        min = z
    return (max, min)
print(max_min( 15,10,39))

这个方法的问题在于,如果传参是这样的,print(max_min(39,10,15)),它的结果是max=39,min=15,结果显然是不对的。

分析其原因,是考虑到了大数的提取,没考虑到有一种情况下,两个小数没有进行比较。

二,改进后的代码:

c=[]
def max_min(x,y,z):
    max = min = x
    if y > max:
        max = y
        if z > max:
            max = z
        else:
            if z < min:
                min = z
    else:
        min = y
        if z > max:
            max = z
        else:
            if z < min:
                min = z
    return(max,min)

c.append(max_min(1,2,3))

print(c)
print(c[0][0],c[0][1])

那么,问题来了,这样的方法就是好的吗?答案是否定的,首先,从它的长度上来看,就觉得复杂,尽管它经过验证是对的。

既然是学习,就要举一反三、触类旁通。所以在后面我真正使用的过程中,我还是用了其他的方法,我用的是列表的方式解决的。以下是代码:

三。用列表排序解决比大小问题:

def max_min(x, y, z):
    list = []
    list.append(x)
    list.append(y)
    list.append(z)
    list.sort()
    return list
print(max_min(x, y, z))

好了,我不知道它是不是最优的方案,但它完美解决了我的问题。所以我决定不再修改它。

如果有同学看到这篇分享,欢迎提出您的宝贵建议和意见。

如果这些方法解决了您的问题,那么,深感荣幸!!!

#################################

纪念一下自己的第一次分享,期待更多。。。

猜你喜欢

转载自blog.csdn.net/weixin_42205647/article/details/81063227