Ey guys I’m learning pythoin using w3school actually my experience it’s beginner. I’m prcaticing with the try: except: block and I can’t resolve this:
def manejoErrores(valor):
try:
valor = float(valor)
except:
print("error")
return calcular(valor)
def mensaje():
income = input("Ingrese el monto total: ")
return manejoErrores(valor)
x = mensaje()
print(x)
It’s suppose that code recive a amount from a invoice, originally is a string and I try to convert in a float yo continue when I insert number as the beginning the block works but when I insert string to prove the function and try to insert values again it doesn’t work
def mensaje():
valor = input("Ingrese el monto total: ")
return manejoErrores(valor)
By the way, where is the function calcular defined from the first function? Anytime that you use a variable or a function, or any object for that matter must either first be assigned or defined. Here, calcular is not defined so you will still be getting an error.
There are a few things to comment on in this code. Taking your mensaje
function first:
def mensaje():
income = input("Ingrese el monto total: ")
return manejoErrores(valor)
This calls manejoErrores(valor) but does not set a value for valor.
And the value in income, which came from input(), is not used. I
suspect you should be passing income to the manejoErrores()
function.
def manejoErrores(valor):
try:
valor = float(valor)
except:
print("error")
return calcular(valor)
What should the return value of this function be? For valid values of valor I imagine it should be calcular(valor). But what should happen
when valor is not a valid “float string”?
Presently this just prints "error". But then execution falls through
and runs the return statement anyway, which doubtless raises its own
exception because valur if still a string.
Also, try to always avoid a “bare except”, this line:
except:
This catches any exception. For example, if you type a variable name
wroing Python will raise a NameError exception and your code will also
catch that. Catch only what you expect to handle: to accomodate in
some way. So for float() with a bad number string you should expect a ValueError, and only catch that:
Hey guys, I’m appreciate your answer I just wanted to encapsulate everything in functions to manage the messages to the user and los procesos. it’s just a practice, and this morning I’ve started everything and in the function mensaje() I did the comprobations I like to separate both process because my original idea was drive messages and comprobations in different process,
The final code its:
"""practice #5"""
def calculateinvoice(fvalue):
"""function to receive the real value and
return final values"""
return fvalue
def message():
"""function to receive the invoice's value and
validate for errors
"""
err = True
while err:
try:
value = float(
input("Enter the total of your invoice: "))
err = False
except ValueError:
print("Enter correct values,")
return value
vvalue = message()
nvalue = calculateinvoice(vvalue)
print(nvalue)
It’s deffinetly not the best code I’d like to do a function for process if there are something to improve let me know. Thank you Guys!