Python:查找哪个变量具有最高值并将该值赋给新变量

时间:2015-06-03 17:44:31

标签: python

我希望能够找到三个不同变量的最高值,并为它们分配自己的整数值。这些是我的变量:

firstscore = 1
secondscore = 7
thirdscore = 8

我想找到哪些变量具有最高价值。为此,我创建了这段代码:

if firstscore > secondscore:
    if firstscore > thirdscore:
        highestscore = firstscore
    if thirdscore > firstscore:
        highestscore = thirdscore

if secondscore > firstscore:
    if secondscore > thirdscore:
        highestscore = secondscore
    if thirdscore > secondscore:
        highestscore = thirdscore

if thirdscore > firstscore:
    if thirdscore > secondscore:
        highestscore = thirdscore
    if secondscore > thirdscore:
        highestscore = secondscore

如果我有不同编号的变量(如上所述),那么此代码可以正常工作,因此变量得分最高'将等于8(最高数字是第三次评分)。但是,如果我使用三个变量,并且其中两个共享相同的值(例如:而不是1,7,8,我有8,8,3),变量得分最高'是 总是 0!任何人都可以解释为什么会发生这种情况,以及是否有办法在我的代码中解决这个问题?我确定这是一个合乎逻辑的问题,但我还没弄清楚。我无法理解它!

3 个答案:

答案 0 :(得分:5)

最简单的方法是:

highestscore = max(firstcore, secondscore, thirdscore)

但是,我建议将所有值都放在列表中,例如

a = [5, 2, 9, 23, 89, 42, 23, 49, 0, -3, -7]

然后再做

highestscore = max(a)

你的问题的答案,为什么你的最高记录总是0,是因为你只检查大于(和8相等,或大于等于8)。这就是为什么你没有进入任何一个道路的原因。 Max更好,因为简单并且可以处理无数个参数,而不是只有三个(四个,五个,六个......)。此外,它不易出错,因为您的代码少得多;)

答案 1 :(得分:4)

我猜你在某处将highestscore初始化为0。您的条件语句仅处理每个数字严格大于另一个数字而不是大于或等于的情况。这意味着如果其中两个变量彼此相等,则highestscore不会被重新分配。

尽管如此,找到最高分的最简单方法如下:

highestscore = max(firstscore, secondscore, thirdscore)

答案 2 :(得分:0)

首先,编写相同内容的最pythonic方式是:

highestscore = max((firstscore, secondscore, thirdscore))

其次,问题中的代码是错误的。您需要使用 else 语句。