Работает только для целых неотрицательных чисел
from math import sqrt
def input_int(count):
cathetus = raw_input('Введите число {}: '.format(count)) # python2
# cathetus = input('Введите число {}: '.format(count)) # python3
return int(cathetus) if cathetus.isdigit() else input_int(count)
def calculation(a, b):
hypotenuse = sqrt(a ** 2 + b ** 2)
square = float(a * b)/2 # updated, old: square = (a * b)/2
return {'hypotenuse': hypotenuse, 'square': square}
result = calculation(input_int(1), input_int(2))
print("\nгипотенуза: {hypotenuse}\nплощадь: {square}".format(**result))
И функции все таки по человечески надо называть.
PS по поводу того что только с целочисленными работает - исходный вариант также работал только с целыми числами (a = int(a), а не a = float(a))