#python
#python
Вопрос:
Я создаю программу, в которой мне нужно, чтобы пользователь вводил серию оценок домашних заданий (от 0 до 10), пока они не наберут «готово», и в этом случае я должен вычислить среднее значение баллов и указать соответствующую буквенную оценку. Моя проблема в том, что я не знаю, как вычислить среднее значение, когда у меня нет точного количества домашних заданий, на которые можно разделить сумму всех домашних заданий, поскольку это не конечный цикл. А также, когда я запускаю свою программу, я продолжаю получать сообщение об ошибке с надписью TypeError: неупорядоченные типы: str() < int()
Вот мой код до сих пор:
print("Enter your homework scores one at a time, must be an integer ranging from 0 to 10. When finished, type done.")
number=input("Enter your homework grade: ")
while number != 'done':
number=input("Enter your homework grade: ")
percentage= number*10 #I need to divide by number of homeworks there are, but I'm not sure how to get the variable I need to divide by.
if number < 0 or number > 10:
print("Score must be between 0 and 10")
elif percentage >= 92 and number < 100:
letter = 'A'
elif percentage >= 87 and number < 92:
letter = 'B '
elif percentage >= 80 and number < 87:
letter = 'B'
elif percentage >=77 and number < 80:
letter = 'C '
elif percentage >=70 and number < 77:
letter = 'C'
elif percentage >= 67 and number < 70:
letter = 'D '
elif percentage >= 60 and number < 67:
letter = 'D'
elif percentage < 60 and number >= 0:
letter= 'F'
elif number == 'done':
print(percentage,"%, you got an ", letter)
else:
print("Error: please enter an integer ranging from 0 and 10.")
Ответ №1:
Входные данные представляют собой строковый тип, поэтому вы должны явно преобразовать его в целое число, используя что-то вроде «number = int (число)».
Вы можете создать отдельную счетную переменную, которая увеличивается каждый раз в цикле, а затем использовать это конечное значение для деления, когда вы закончите.
Ответ №2:
Вне вашего while
цикла вы можете сохранить массив оценок, которые вы видели до сих пор. Он начнется с пустого.
arr = []
Каждый раз, когда вы видите новую оценку, вы можете добавить ее в массив.
newGrade = input("Enter your homework grade")
arr.append(float(newGrade)*10)
Как только пользователь введет done , вы можете вычислить среднее значение, используя функции sum
and len
, которые дают вам сумму элементов в массиве и количество элементов в массиве соответственно.
average = sum(arr)/len(arr)
Комментарии:
1. Спасибо! На самом деле я не должен использовать слишком много разных функций, подобных тем, которые вы предложили, но я все равно ценю ввод!
Ответ №3:
Кевин говорит вам создать целое число, скажем, count = 0, и увеличивать его каждый раз, когда вы запрашиваете оценку.
В конце вы берете сумму / количество.
Кроме того, вот немного улучшенный способ: начните с count = 0
Do:
Ask for grade
AVG = (AVG*count new grade)/(count 1)
count
Среднее значение * count дает вам предыдущую сумму.