Re: Using Python as a Calculator
Jorge Garcia via Edu-sig <[email protected]> Sun, 22 Jun 2025 14:17:04 -0400
| Newsgroups | gmane.comp.python.education |
|---|---|
| Message-ID | <CAPkJXS0hst=qaDOunJfJPuELnPdW+kJi-8h45-LCHFEEw9xA5g@mail.gmail.com> |
--===============1524684400307074715== Content-Type: multipart/alternative; boundary="000000000000f05b0c06382d1ab3" --000000000000f05b0c06382d1ab3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable https://colab.research.google.com/drive/1Gbc1TbCr6FabIWkr_HnCu7R2x1FcLnHz On Sun, Jun 22, 2025, 2:12=E2=80=AFPM Jorge Garcia <[email protected]> wro= te: > Share code on github is all well and good, but sharing in a Jupyter > Notebook such as colab.research.google.com makes it executable in your > browser right away! > > On Sun, Jun 22, 2025, 2:01=E2=80=AFPM Wes Turner via Edu-sig <edu-sig@pyt= hon.org> > wrote: > >> Here's the link to that PR, which makes things testable and then verifie= s >> with test assertions: >> >> https://github.com/4dsolutions/python_camp/pull/4 >> >> ... @staticmethod is for when you want to add a method on a class that >> doesn't take self as the first parameter. >> >> On Sun, Jun 22, 2025, 1:52=E2=80=AFPM Wes Turner <[email protected]> = wrote: >> >>> How to best phase in Python? >>> >>> It can check your answers every time something is changed: >>> >>> ```py >>> 1+1 >>> >>> print(1+1) >>> >>> x =3D 1 +1 >>> print(x) >>> >>> 1+1 =3D=3D True >>> >>> print(1+1 =3D=3D True) >>> >>> assert 1+1 =3D=3D True >>> print("It did not raise AssertionError") >>> >>> assert 1+1 =3D=3D False >>> print("This won't run, because AssertionError is an Exception, and >>> control flow is interrupted on Exception") >>> >>> >>> # %% >>> import unittest >>> test =3D unittest.TestCase() >>> >>> test.assertEqual(1+1, 0) >>> ``` >>> >>> We verify our assumptions about types and values of parameters and >>> return values at runtime; we check preconditions and post conditions. >>> >>> I am reminded of camper_program.py from 2020: >>> >>> https://mail.python.org/archives/list/[email protected]/message/OYZ2QP= DYDFRV2PPJXEOHUTFWFPZVOCJO/ >>> >>> Maybe a good prompt to lock in that automated testing is much more >>> efficient than attempting to manually test everything after every chang= e: >>> >>> "Write your own test assertion library; starting with `def >>> assertEqual(a, b, msg)`" >>> >>> On Sun, Jun 22, 2025, 1:19=E2=80=AFPM kirby urner via Edu-sig < >>> [email protected]> wrote: >>> >>>> >>>> From an educator's perspective, how to best phase-in Python is often a >>>> core question. >>>> >>>> One answer is: use it the same way you might use a calculator in the >>>> classroom, but show off why it's better. >>>> >>>> An example (new today) of what I share with my student and peer >>>> faculty, perhaps new to Python: >>>> >>>> >>>> https://github.com/4dsolutions/School_of_Tomorrow/blob/master/smod_pla= y.py >>>> >>>> A mix of Python + geometric content already familiar to those using my >>>> curriculum. >>>> >>>> The docstring itself contains a link to the famous Using Python as a >>>> Calculator tutorial at the Python dot org site. >>>> >>>> Kirby >>>> >>>> _______________________________________________ >>>> Edu-sig mailing list -- [email protected] >>>> To unsubscribe send an email to [email protected] >>>> https://mail.python.org/mailman3//lists/edu-sig.python.org >>>> Member address: [email protected] >>>> >>> _______________________________________________ >> Edu-sig mailing list -- [email protected] >> To unsubscribe send an email to [email protected] >> https://mail.python.org/mailman3//lists/edu-sig.python.org >> Member address: [email protected] >> > --000000000000f05b0c06382d1ab3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <p dir=3D"ltr"><a href=3D"https://colab.research.google.com/drive/1Gbc1TbCr= 6FabIWkr_HnCu7R2x1FcLnHz">https://colab.research.google.com/drive/1Gbc1TbCr= 6FabIWkr_HnCu7R2x1FcLnHz</a></p> <br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class= =3D"gmail_attr">On Sun, Jun 22, 2025, 2:12=E2=80=AFPM Jorge Garcia <<a h= ref=3D"mailto:[email protected]">[email protected]</a>> wrote:<br></di= v><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:= 1px #ccc solid;padding-left:1ex"><p dir=3D"ltr">Share code on github is all= well and good, but sharing in a Jupyter Notebook such as <a href=3D"http:/= /colab.research.google.com" target=3D"_blank" rel=3D"noreferrer">colab.rese= arch.google.com</a> makes it executable in your browser right away!</p> <br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sun= , Jun 22, 2025, 2:01=E2=80=AFPM Wes Turner via Edu-sig <<a href=3D"mailt= o:[email protected]" target=3D"_blank" rel=3D"noreferrer">[email protected]= rg</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi= n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"auto"= >Here's the link to that PR, which makes things testable and then verif= ies with test assertions:<div dir=3D"auto"><br></div><div dir=3D"auto"><a h= ref=3D"https://github.com/4dsolutions/python_camp/pull/4" rel=3D"noreferrer= noreferrer noreferrer" target=3D"_blank">https://github.com/4dsolutions/py= thon_camp/pull/4</a></div><div dir=3D"auto"><br></div><div dir=3D"auto">...= @staticmethod is for when you want to add a method on a class that doesn&#= 39;t take self as the first parameter.=C2=A0</div></div><br><div class=3D"g= mail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, Jun 22, 2025, 1:5= 2=E2=80=AFPM Wes Turner <<a href=3D"mailto:[email protected]" rel=3D"= noreferrer noreferrer noreferrer" target=3D"_blank">[email protected]</a= >> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px= 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><di= v dir=3D"auto"><div dir=3D"auto">How to best phase in Python?</div><div dir= =3D"auto"><br></div><div dir=3D"auto">It can check your answers every time = something is changed:</div><div dir=3D"auto"><br></div><div dir=3D"auto">``= `py</div><div dir=3D"auto">1+1</div><div dir=3D"auto"><br></div><div dir=3D= "auto">print(1+1)</div><div dir=3D"auto"><br></div><div dir=3D"auto">x =3D = 1 +1</div><div dir=3D"auto">print(x)</div><div dir=3D"auto"><br></div><div = dir=3D"auto">1+1 =3D=3D True</div><div dir=3D"auto"><br></div><div dir=3D"a= uto">print(1+1 =3D=3D True)</div><div dir=3D"auto"><br></div><div dir=3D"au= to">assert 1+1 =3D=3D True</div><div dir=3D"auto">print("It did not ra= ise AssertionError")</div><div dir=3D"auto"><br></div><div dir=3D"auto= ">assert 1+1 =3D=3D False</div><div dir=3D"auto">print("This won't= run, because AssertionError is an Exception, and control flow is interrupt= ed on Exception")</div><div dir=3D"auto"><br></div><div dir=3D"auto"><= br></div><div dir=3D"auto"># %%</div><div dir=3D"auto">import unittest</div= ><div dir=3D"auto">test =3D unittest.TestCase()</div><div dir=3D"auto"><br>= </div><div dir=3D"auto">test.assertEqual(1+1, 0)</div><div dir=3D"auto">```= </div><div dir=3D"auto"><br></div><div dir=3D"auto">We verify our assumptio= ns about types and values of parameters and return values at runtime; we ch= eck preconditions and post conditions.</div><div dir=3D"auto"><br></div><di= v dir=3D"auto">I am reminded of camper_program.py from 2020:=C2=A0</div><a = href=3D"https://mail.python.org/archives/list/[email protected]/message/OY= Z2QPDYDFRV2PPJXEOHUTFWFPZVOCJO/" rel=3D"noreferrer noreferrer noreferrer no= referrer" target=3D"_blank">https://mail.python.org/archives/list/edu-sig@p= ython.org/message/OYZ2QPDYDFRV2PPJXEOHUTFWFPZVOCJO/</a><div dir=3D"auto"><b= r></div><div dir=3D"auto">Maybe a good prompt to lock in that automated tes= ting is much more efficient than attempting to manually test everything aft= er every change:</div><div dir=3D"auto"><br></div><div dir=3D"auto">"W= rite your own test assertion library; starting with `def assertEqual(a, b, = msg)`"<br><br><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr"= class=3D"gmail_attr">On Sun, Jun 22, 2025, 1:19=E2=80=AFPM kirby urner via= Edu-sig <<a href=3D"mailto:[email protected]" rel=3D"noreferrer norefe= rrer noreferrer noreferrer" target=3D"_blank">[email protected]</a>> wr= ote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px= 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D= "ltr"><div class=3D"gmail_default" style=3D"font-family:verdana,sans-serif;= font-size:small"><br></div><div class=3D"gmail_default" style=3D"font-famil= y:verdana,sans-serif;font-size:small">From an educator's perspective, h= ow to best phase-in Python is often a core question.=C2=A0</div><div class= =3D"gmail_default" style=3D"font-family:verdana,sans-serif;font-size:small"= ><br></div><div class=3D"gmail_default" style=3D"font-family:verdana,sans-s= erif;font-size:small">One answer is: use it the same way you might use a ca= lculator in the classroom, but show off why it's better.</div><div clas= s=3D"gmail_default" style=3D"font-family:verdana,sans-serif;font-size:small= "><br></div><div class=3D"gmail_default" style=3D"font-family:verdana,sans-= serif;font-size:small">An example (new today) of what I share with my stude= nt and peer faculty, perhaps new to Python:</div><div class=3D"gmail_defaul= t" style=3D"font-family:verdana,sans-serif;font-size:small"><br></div><div = class=3D"gmail_default" style=3D"font-family:verdana,sans-serif;font-size:s= mall"><a href=3D"https://github.com/4dsolutions/School_of_Tomorrow/blob/mas= ter/smod_play.py" rel=3D"noreferrer noreferrer noreferrer noreferrer norefe= rrer" target=3D"_blank">https://github.com/4dsolutions/School_of_Tomorrow/b= lob/master/smod_play.py</a></div><div class=3D"gmail_default" style=3D"font= -family:verdana,sans-serif;font-size:small"><br></div><div class=3D"gmail_d= efault" style=3D"font-family:verdana,sans-serif;font-size:small">A mix of P= ython=C2=A0+ geometric content already familiar to those using my curriculu= m.</div><div class=3D"gmail_default" style=3D"font-family:verdana,sans-seri= f;font-size:small"><br></div><div class=3D"gmail_default" style=3D"font-fam= ily:verdana,sans-serif;font-size:small">The docstring itself contains a lin= k to the famous Using Python as a Calculator tutorial at the Python dot org= site.</div><div class=3D"gmail_default" style=3D"font-family:verdana,sans-= serif;font-size:small"><br></div><div class=3D"gmail_default" style=3D"font= -family:verdana,sans-serif;font-size:small">Kirby</div><div class=3D"gmail_= default" style=3D"font-family:verdana,sans-serif;font-size:small"><br></div= ></div> _______________________________________________<br> Edu-sig mailing list -- <a href=3D"mailto:[email protected]" rel=3D"norefe= rrer noreferrer noreferrer noreferrer noreferrer" target=3D"_blank">edu-sig= @python.org</a><br> To unsubscribe send an email to <a href=3D"mailto:[email protected]"= rel=3D"noreferrer noreferrer noreferrer noreferrer noreferrer" target=3D"_= blank">[email protected]</a><br> <a href=3D"https://mail.python.org/mailman3//lists/edu-sig.python.org" rel= =3D"noreferrer noreferrer noreferrer noreferrer noreferrer noreferrer" targ= et=3D"_blank">https://mail.python.org/mailman3//lists/edu-sig.python.org</a= ><br> Member address: <a href=3D"mailto:[email protected]" rel=3D"noreferrer n= oreferrer noreferrer noreferrer noreferrer" target=3D"_blank">wes.turner@gm= ail.com</a><br> </blockquote></div></div></div> </blockquote></div> _______________________________________________<br> Edu-sig mailing list -- <a href=3D"mailto:[email protected]" rel=3D"norefe= rrer noreferrer" target=3D"_blank">[email protected]</a><br> To unsubscribe send an email to <a href=3D"mailto:[email protected]"= rel=3D"noreferrer noreferrer" target=3D"_blank">[email protected]</= a><br> <a href=3D"https://mail.python.org/mailman3//lists/edu-sig.python.org" rel= =3D"noreferrer noreferrer noreferrer" target=3D"_blank">https://mail.python= .org/mailman3//lists/edu-sig.python.org</a><br> Member address: <a href=3D"mailto:[email protected]" rel=3D"noreferrer nor= eferrer" target=3D"_blank">[email protected]</a><br> </blockquote></div> </blockquote></div> --000000000000f05b0c06382d1ab3-- --===============1524684400307074715== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Edu-sig mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/edu-sig.python.org Member address: [email protected] --===============1524684400307074715==--