Возникли проблемы с проверкой входных данных / исключением самого высокого значения / самого низкого значения

#python #validation

#python #проверка

Вопрос:

Я очень, очень, ОЧЕНЬ новичок в программировании. Пока мне действительно нравится этот класс. Однако в последнее время проблемы с программированием были немного запутанными и сложными. Самая актуальная проблема, над которой я работаю, заставляет меня почесать голову, поскольку я не могу найти помощи ни в своей книге, ни в Интернете. В двух словах мне нужно создать программу, которая принимает оценку пяти судей в диапазоне 0-10, исключает самые высокие и самые низкие баллы, а затем вычисляет среднее значение оставшихся трех баллов. Хотя я понимаю, как проверять пользовательский ввод для одного значения и вычислять среднее значение, я понятия не имею, как проверить пользовательский ввод для всех 5 входных данных, не делая ничего слишком утомительного, и исключить наивысший и наименьший баллы, которые вводит пользователь. У меня есть некоторое представление о том, что мне нужно сделать. Примите пользовательский ввод как значение с плавающей точкой, затем передайте его в функцию, которая принимает самые высокие и самые низкие оценки, а затем отправьте его в другую функцию, которая вычислит среднее значение. Если кто-нибудь может мне помочь в этом, я буду очень благодарен. Ниже приведено то, что я разработал до сих пор. Заранее благодарю вас.

 def getJudgeData():
badEntry = True

while (badEntry) :
        judge1 = float (input("Please enter the first judge's score : "))
        if (judge1 < 0 or judge1 > 10) :
            print ("The score must be greater than 0 and less than or equal to 10!")

        else:
            badEntry = False

    while (badEntry) :
        judge2 = float (input("Please enter the second judge's score : "))
        if (judge2 < 0 or judge2 > 10) :
            print ("The score must be greater than 0 and less than or equal to 10!")

        else:
            badEntry = False
  

Комментарии:

1. Добро пожаловать в SO. Пожалуйста, отформатируйте свой код так, чтобы он был немного более понятным. Чтобы помочь вам начать работу, вы можете получить входные данные от пользователя в виде набора чисел с плавающей запятой, разделенных пробелами, а затем разделить результат, а затем найти max / min и проверить включение.

Ответ №1:

Приведенный ниже код попросит ввести оценку 5 раз, поэтому цикл в диапазоне 5. Он выдаст ошибку значения, если вводимые пользователем данные не являются целым числом. Если вы хотите значение с плавающей точкой, вы можете изменить его на значение с плавающей точкой. Если введенное пользователем значение превышает 10, пользователю будет предложено ввести числа в правильном диапазоне. Затем функция calculate_average возвращает среднее значение, округленное до двух знаков после запятой, вы можете изменить это, если требуется больше или меньше знаков после запятой.

Я не был уверен, что вы имели в виду, вычитая максимальные и минимальные значения, поэтому я удалил их из результатов. Но если я неправильно понял, просто оставьте их там, а затем вычислите среднее значение как обычно.

 scores = []

def getJudgeData():
    for i in range(5):
        try:
            judge_score = int(input("Please enter the first judge's score : "))
            if (judge_score in range(11)):
                scores.append(judge_score)
            else:
                print('Enter a score from 1 to 10')
        except ValueError:
            print("Enter a valid number")

def calculate_average():
    max_value = max(scores)
    min_value = min(scores)
    scores.remove(max_value)
    scores.remove(min_value)
    average = sum(scores)/len(scores)
    return round(average, 2)



getJudgeData()
print(calculate_average())

  

Комментарии:

1. Извините, если возникла путаница! В значительной степени мне пришлось бы вычесть наивысший балл и наименьший балл, что оставило бы мне три балла для использования в среднем, но спасибо за ваш ответ!

2. О, здорово, потому что это то, что делает приведенный выше код в любом случае. Я правильно вас понял.