寻找最低的测试分数和两个高分数的平均值

4
我已了解完其他作业的内容,但我卡在最后一步,需要找到最低的测试分数,然后显示最高两个考试分数的平均值,并显示最低的测试分数。我知道我需要在“ def findAndReturnLowest”之下添加if / elif / else函数,但我出现了错误。这是我应该如何操作的截图enter image description here 这是我的代码
def main():
    score1 = 0.0
    score2 = 0.0
    score3 = 0.0

    score1 = getTestScore()
    score2 = getTestScore()
    score3 = getTestScore()

    calcAvgAndDisplayResults(score1, score2, score3)

def calcAvgAndDisplayResults(s1, s2, s3):
    lowest = 0.0
    average = 0.0
    lowest = findAndReturnLowest(s1, s2, s3)
def findAndReturnLowest(s1, s2, s3):


    average = (s1+s2+s3-lowest)/2
    print("Average = ", average)

def getTestScore():
    test = 0.0
    test=float(input("Enter a test score between 0 and 100: "))
    return test

# start of program
main()

1
到目前为止,你的代码还没有做太多事情,看起来你只是发布了作业中预先构建的函数。此外,你计算平均数的方法似乎不正确,而且在那个函数中也没有传递变量“lowest”。 - gold_cy
2个回答

1
使用嵌套的 if
def findAndReturnLowest(s1, s2, s3):
    if s1 > s3 and s2 > s3:
        return s3

    else:
        return s2 if s1 > s2 else s1

@aws_apprentice 是的,完全忽略了那个。 - gmds
我取消了我的“downvote”,但你可以更简化那些条件语句。 - gold_cy
代码中应该有一个elif函数吗?这部分代码没有运行。 :( - Moses
@MosesMartinez 你可以把第二个 if 去掉,然后将其与 else 结合起来放入一个 elif 中。 - gmds

1
非常简单的方法,应该能够起作用,但是还有很多其他方法:
def main():
    score1 = 0.0
    score2 = 0.0
    score3 = 0.0

    score1 = getTestScore()
    score2 = getTestScore()
    score3 = getTestScore()

    calcAvgAndDisplayResults(score1, score2, score3)

def calcAvgAndDisplayResults(s1, s2, s3):
    lowest = findAndReturnLowest(s1, s2, s3)

def findAndReturnLowest(s1, s2, s3 ):
    lowest = min([int(x) for x in [s1,s2,s3]])
    average = (s1+s2+s3-lowest)/2
    print("Average = ", average)
    print("Lowest = ", lowest)

def getTestScore():
    test = 0.0
    test=float(input("Enter a test score between 0 and 100: "))
    return test

# start of program
main()

1
如果你要使用 sort... 为什么不直接使用 min 呢? - Henry Yik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接