Bueno, para empezar, si desea verificar constantemente sus entradas, tendrá que usar un bucle. Como en, el PsuedoCode para el algoritmo debería ser:
Loop Begin
Check the value of a and b
If a or b is less than 0 then ask for input again
Otherwise, continue
Tenga en cuenta que el algoritmo posee correr al menos una vez.
Así es básicamente como el psuidocódigo debería parece. Entonces, este es un caso en el que puedes usar un do-while
construcción de bucle. En Python, no hay algo como esto, así que nosotros emular eso:
import math
def take_in():
a = raw_input("Enter the value of side a -> ")
b = raw_input("Enter the value of side b -> ")
# Trying to convert to a float
try:
a, b = float(a), float(b)
# If successfully converted, then we return
if a > 0 and b > 0:
return a, b
except ValueError:
pass
# If we cannot return, then we return false, with a nice comment
print "Invalid input"
return False
def main():
# Calling the function at least once
valid = take_in()
# While we are not getting valid input, we keep calling the function
while not valid:
# Assigning the value to valid
valid = take_in()
# Breaking the return tuple into a and b
a, b = valid
print math.sqrt(a ** 2 + b ** 2)
if __name__ == '__main__':
main()