hello people (I am new to python) Question: i use ipywidgets with buttons, i want to call a list of function, sometimes there’s a problem in a function (syntax, division by zero,…), i try to put an exception to pass the error and lunch the next function, don’t work :(
I’m running in jupyter environment using python 3.8.5.final.0 and pandas 1.1.3 division by 0 problem of syntax
def lagrange():
a=2
b=3
print('donner la fonction')
print ('Lagrange : a/b=',a/b)
def newton():
a=2
b=0
print('donner Newton')
print ('Newton : a/b=',a/b)
def jacobi():
a=2
b=3
print('donner Newton')
prindt ('Jacobi : a/b=',a/b)
I meant some prolems in the 2 functions (division by 0 and wrong syntax)
import ipywidgets as widgets
from IPython.display import display
button1 = widgets.Button(description="Purge",
layout=widgets.Layout(width="auto", height="auto"), button_style="success")
button2 = widgets.Button(description="Mise à Jour",
layout=widgets.Layout(width="auto", height="auto"), button_style="primary")
widgets.TwoByTwoLayout(top_left=button1, top_right=button2)
def on_button1_clicked(b):
marchands = [lagrange(),newton(),jacobi()]
for entry in marchands :
try :
entry
except :
print('Oops! ', entry)
print (entry,' is OK')
def on_button2_clicked(b):
mabrouk()
button1.on_click(on_button1_clicked)
button2.on_click(on_button2_clicked)
widgets.TwoByTwoLayout(top_left=button1, top_right=button2)
Advertisement
Answer
You’re calling your functions at the wrong time. In
marchands = [lagrange(),newton(),jacobi()]
you execute the 3 functions, and store their outputs in the list.
What you want to do is store the functions themselves:
marchands = [lagrange ,newton ,jacobi]
and call them in your try: ... except: block:
for entry in marchands :
try :
entry() # note the parenthesis to call the function
except :
print('Oops! ', entry.__name__)
print (entry.__name__,' is OK')