Поиск наименьшего результата теста и среднего из двух высоких результатов

У меня есть все остальное в моем домашнем задании, но я застрял на последнем этапе, который требует, чтобы я нашел наименьший результат теста, затем отобразил средние два наивысших результата теста, а также показал самый низкий результат теста. Я знаю, что мне нужно добавить функцию if / elif / else под def findAndReturnLowest, но я обнаружил ошибки. это снимок экрана, я должен это сделать. введите здесь описание изображения

это мой код

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()

person Moses Martinez    schedule 27.03.2019    source источник
comment
пока что вы мало что сделали в своем коде, похоже, вы только что разместили предварительно созданные функции из задания. также ваш расчет среднего значения не выглядит правильным, и вы не передаете переменную lowest где-либо в этой функции.   -  person gold_cy    schedule 27.03.2019


Ответы (2)


Используйте вложенный if:

def findAndReturnLowest(s1, s2, s3):
    if s1 > s3 and s2 > s3:
        return s3

    else:
        return s2 if s1 > s2 else s1
person gmds    schedule 27.03.2019
comment
@aws_apprentice Верно, совершенно не заметил этого. - person gmds; 27.03.2019
comment
удалил мой голос против, но вы можете упростить эти условия - person gold_cy; 27.03.2019
comment
должна ли быть функция elif? Код не запускает эту часть. :( - person Moses Martinez; 27.03.2019
comment
@MosesMartinez, вы можете взять второй if и объединить его с else, чтобы поместить в elif. - person gmds; 27.03.2019

Очень простой подход, который должен работать, но их много:

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()
person cccnrc    schedule 27.03.2019
comment
Если вы собираетесь использовать _1 _... почему бы просто не использовать min? - person Henry Yik; 27.03.2019