python обрабатывает недопустимые входные данные от пользователя

#python #exception #error-handling #invalid-characters

#питон #исключение #обработка ошибок #недопустимые символы

Вопрос:

Я застрял с этим домашним заданием:

перепишите следующую программу, чтобы она могла обрабатывать любые недопустимые входные данные от пользователя.

 def example():
   for i in range(3)
       x=eval(input('Enter a number: '))
       y=eval(input('enter another one: '))
       print(x/y)
 

я попытался попробовать… за исключением ValueError, но программа по-прежнему не запускается.

Комментарии:

1. Вы пишете, вы пытались try...except . Обычно это должно работать. Не могли бы вы добавить свой код? В принципе, вы должны попытаться решить свою домашнюю работу самостоятельно. В противном случае вы ничего не узнаете. Если вы опубликуете свой код и подробную информацию о проблеме, с которой вы столкнулись в своем решении, мы сможем помочь вам лучше.

Ответ №1:

Это потому, что вы, вероятно, не учли ZeroDivisionError , что вы получаете, когда y = 0! Как насчет

 def example():
   for i in range(3):
      correct_inputs = False
      while not correct_inputs:
         try:
            x=eval(input('Enter a number: '))
            y=eval(input('enter another one: '))
            print(x/y)
            correct_inputs = True
         except:
            print("bad input received")
            continue
 

Эта функция вычисляет ровно 3 правильных деления x / y!
Если вам нужна хорошая ссылка на continue operator, пожалуйста, посмотрите здесь

Ответ №2:

 def example():

   for i in range(3)
      try:
         x=eval(input('Enter a number: '))
      except ValueError:
         print("Sorry, value error")
      try:
         y=eval(input('enter another one: '))
      except ValueError:
         print("Sorry, value error")`enter code here`
      try:
         print(x/y)
      except ValueError:
         print("Sorry, cant divide zero")
 

Комментарии:

1. этот код будет обрабатывать только ошибку деления на ноль, другие ошибки, например, если пользователь вводит строку, не обрабатываются.