TypeError - неподдерживаемые типы операндов

Я возился с модулями, и я пытаюсь проверить пользовательский ввод вместе с умножением модулей. С площадью круга я не возился, но когда разберусь с этим, я это сделаю. У меня проблемы с площадью прямоугольника. Это работает в первый раз, но говорит, что пользователь вводит что-то неправильно, а затем повторно подсказывает им, что это не тип.

Ошибка

TypeError: неподдерживаемые типы операндов для *: «NoneType» и «NoneType»

Код выглядит следующим образом:

код

def Area_Of_A_Rectangle():
  print("To Find the Area of a Rectangle we need two things")
  print("The Area of a Rectangle: ",Rectangle_Height() * Rectangle_Width() )


##!--------------------Validation Modules------------------!##


#-----Rectangle Height Input------------------------------------------------    
def Rectangle_Height():
  try:
    Rec_Height = float(input("What is the Height of your Rectangle: "))
  except ValueError:
    print("Please Try Again!")
    Rectangle_Height()
  else:
    return Rec_Height

#-----Rectangle Width-------------------------------------------------------
def Rectangle_Width():
  try:
    Rec_Width = float(input("What is the Width of your Rectangle: "))
  except ValueError:
    print("Please Try Again!")
    Rectangle_Width()
  else:
    return Rec_Width


Area_Of_A_Rectangle()

person Hoyt    schedule 25.07.2016    source источник
comment
Пожалуйста, размещайте код в виде текста, а не изображения.   -  person Renzo    schedule 25.07.2016
comment
Хорошо ... Вот оно   -  person Hoyt    schedule 25.07.2016


Ответы (1)


Довольно просто — когда вы повторно вызываете Rectangle_Width или Rectangle_Height после ошибки, вы не возвращаете этот результат.

Ie:

return Rectangle_Width() 

vs

Rectange_Width()

Честно говоря, это нужно делать в цикле, не используя исключения и рекурсивные вызовы.

Например:

while True:
    Rec_Width = None
    try:
        Rec_Width = float(input("What is the Width of your Rectangle: "))
    except ValueError:
        print("Please try again!")
        continue
    else:
        return Rec_Width
person Zeroth    schedule 20.07.2017