Использование try / исключением с операторами if / else - PullRequest
0 голосов
/ 19 октября 2019

Мне нужно получить среднее значение набора чисел из пользовательского ввода, но также нужно использовать try и, кроме ввода «bob», которое выводит сообщение об ошибке, затем давайте им повторить попытку.

IЯ пытался использовать try / исключением в операторе if / else, но он просто выдает сообщение об ошибке после первого целочисленного ввода (неправильно). Теперь он настроен для запуска пользовательского ввода, получения среднего значения и выдачи сообщения об ошибке, если введен «bob». НО это должно позволить пользователю продолжать попытки, а не завершать программу.

try:
    val = int(input("Enter how many numbers: "))
    sums = 0
    if val == 0:
        average = "error"
        print("error, try again")
    else:
        for value in range(val):
            num = float(input("enter a number: "))
            sums = sums + float(num)
            average = sums / val
            num = "bob"
            #num = float(input("enter a number: "))
        print("Average: " + str(average))
except:
    print("error, try again")

ожидается: Количество чисел: 3 Введите число: 2.5 Введите число: ошибка Боба, попробуйте еще раз Введите число: 1.5 Введите число:3.5 Среднее: 2.5

фактическое: введите число: 3 введите число: 2.5 введите число: ошибка Боба, повторите попытку

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Вам нужно использовать try /, кроме тех строк кода, где вы ожидаете ошибку. В этом случае, когда вы преобразуете пользовательский ввод в int или float.

Поскольку вы используете цикл for, вы пропустите число в случае неправильного ввода. цикл while лучше в этом случае.

Вот что будет работать:

val = input("Enter how many numbers: ")

while not val.isdigit() or val == '0':
    print("error, try again")
    val = input("Enter how many numbers: ")
val = int(val)
valid_nums = 0
sums = 0
while valid_nums < val:
    try:
        num = float(input("enter a number: "))
        valid_nums += 1
        sums += num
    except ValueError:
        print("error, try again")
        continue
print("Average:", sums/val)
0 голосов
/ 19 октября 2019

Вы можете использовать try / catch внутри цикла.

...