#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. О, здорово, потому что это то, что делает приведенный выше код в любом случае. Я правильно вас понял.