2015-11-25 3 views
0

только что начал играть с python, столкнулся с небольшой проблемой простой пример области квадрата с обработкой исключений для неправильного ввода работает, когда целые числа правильно введены - но я должен вводить и строку или char-I получить Traceback (самый последний вызов последнего): Файл " ex3.py", строка 29, в области = ширина * длина TypeError: неподдерживаемый тип (ы) операнд *: 'NoneType' и 'Int'Try/Exception in Function Python

#!/usr/bin/python 

def error(): 
     print "no parameter entered - please enter parameter" 

def get_width(): 
     width = None 
     try: 
       width = int(raw_input("please enter width of the room in meters: ")) 
       return width 
     except: 
       error() 
       get_width() 

def get_length(): 
     length = None 
     try: 
       length = int(raw_input("please enter length of the room in meters: ")) 
       return length 

     except: 
       error() 
       get_length() 

print "\nExercise 3: Area of a Room" 

width = get_width() 
length = get_length() 
area = width * length 

print "The area of a room with a width of "+str(width)+" and a length of "+str(length)+" is "+str(area)+" squared meters\n" 

любая помощь/объяснение будет отличным спасибо

ответ

1

Вы делаете рекурсивный вызов, но результат никуда не денется. Вам нужно вернуть его. Например:

return get_width() 
+0

AH! ..awesome thankyou! - он работает, но только наполовину понимаю, я использую функцию рекурсивно да, woudnt обратная ширина обрабатывает результат этого вызова тоже? – ThatsStrange

+0

царапины - я понимаю теперь спасибо – ThatsStrange