Преобразование входной строки в интерфейс

#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')