#python-3.x #integer #user-input #sentinel
#python-3.x #целое число #пользовательский ввод #sentinel
Вопрос:
#This program calculates the average of integer entered
#Once the use press "S".
#"S" is the sentinel
COUNT= 0
SUM= 0
INT=1
Sentinel = "S"
print('Enter test scores as integers, or enter S to get average.')
INT=input('Enter integer: ') # input received as a string to allow for the entry of "S"
#Continue processing as long as the user
#does not enter S
while INT!= Sentinel:
INT=input('Enter integer: ')
I=int(INT) #attempting to format the input(INT) as an integer
COUNT= 1
SUM = COUNT I
if INT == Sentinel:
AVRG= SUM/(COUNT-1)
Я продолжаю получать это сообщение об ошибке :
Обратная трассировка (последний последний вызов): файл «C:UsersjoshuDocumentsCOP100 Pythonпрактика examplesprogram4-13.py «, строка 16, в I=int(INT) ValueError: недопустимый литерал для int() с основанием 10: ‘S’
Комментарии:
1. Вам нужно проверить, является ли введенное значение сигнальным, прежде чем пытаться преобразовать его в целое число.
2. О, как проверка проверки. Спасибо, чувак, я, очевидно, очень новичок в python, и я ценю всю помощь, которую я могу получить. Спасибо.
Ответ №1:
Ваш код предполагает, что пользователь всегда будет вводить числовое значение.
Эта строка будет принимать любые данные, введенные пользователем. Оно может быть числовым или нечисловым.
INT=input('Enter integer: ') # input received as a string to allow for the entry of "S"
Перед преобразованием данных в целое число проверьте, является ли значение числовым. Если это не так, то вы можете отправить сообщение об ошибке обратно пользователю.
I=int(INT) #attempting to format the input(INT) as an integer
Вы можете сделать это, выполнив:
if INT.isnumeric():
I = int(INT)
else:
print ('not a numeric value')
Я предполагаю, что пользователи будут вводить только целые числа. Приведенный выше код будет работать только для целых чисел. Если вы хотите проверить наличие значений с плавающей запятой, используйте try: except
оператор.
Кроме того, ваше вычисление SUM
для получения среднего значения неверно. Вы не должны добавлять COUNT
в SUM
. Вы должны добавлять только I
SUM
при увеличении COUNT
.
Также не пытайтесь использовать имена переменных как sum , int (даже если они прописные).
Вот рабочий код, который вы можете попробовать.
count = 0
total = 0
Sentinel = "S"
#Continue processing as long as the user does not enter S
while True:
test_score = input('Enter test score as integer or enter S to get average: ')
# input received as a string to allow for the entry of "S"
if test_score.isnumeric():
score = int(test_score) #attempting to format the input(INT) as an integer
count = 1
total = score
elif test_score.upper() == Sentinel:
break
else:
print ('Not an integer or S. Please re-enter the value')
if count > 0:
print (total, count)
average_score = total/count
print ('average score is : ', average_score)
else:
print ('No valid entries were made. Average score is N/A')