Найти - Пользователи
Полная версия: Обработка исключения
Начало » Python для новичков » Обработка исключения
1
Protoss
Уважаемые господа кодеры!
Дайте пожалуйста совет, как написать исключение на то, чтобы бы ловилось отрицательное значение?
например примитивный код:
def Square():
      a=float(raw_input("Сторона а: "))
      b=float(raw_input("Сторона b: "))
      square =a*b
      print square
Square()
Как скинуть try\except на переменные А и В, чтобы при вводе отриц. значения писалась ошибка.
Получается кинуть raise, но это не то, что я хотел мне надо, чтобы пользователь мог вводите столько раз пока не пройдет. И вот к какому ужасу я пришел:
def Square():
     while True:
             try:
                        a=float(raw_input("Сторона а: "))
                        b=float(raw_input("Сторона b: ")) 
                        if a and b>=0:
                              break
                        else:
                              print "negative number"   
            except ValueError:
                  print"Wrong Value"
     square =a*b
 Square()
Этот код норм работает и пока значение не станут >=0, то он останется в цикле. Вот такой нубский код я скодил. Подскажите, как эти исключения делают нормальные кодеры?
Singularity
А ‘if’ чем не угодил?
Protoss
Так я написал через if, но мне кажется, что можно все сделать гораздо лучше
GaiveR
Protoss
Этот код норм работает
Вот прям этот? Без закрывающих кавычек в raw_input и с конструкцией:
if a,b>=0:
?

Ну и по теме, я бы как то так написал:
def safe_input(promt):
    error_message = "Value must be integer and greater or equal than zero"
    while True:
        val = raw_input(promt)
        try:
            val = int(val)
        except ValueError:
            print(error_message)
            continue
        if val < 0:
            print(error_message)
            continue
        return val
a = safe_input("a: ")
b = safe_input("b: ")
square = a * b
print(square)
Protoss
Спасибо огромное! А то я все через одно место!
Без кавычек он конечно не работает. Исправил.
GaiveR
if a and b>=0:
это - тоже неправильно

попробуйте выполнить:
a = -5
b = 3
if a and b >= 0:
print("good")
else:
print("bad")
Protoss
GaiveR, спасибо. Но предыдущий вариант настолько мне понравился, что буду использовать его в как шаблон))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB