Re: Using Python as a Calculator
Wes Turner via Edu-sig <[email protected]> Sun, 22 Jun 2025 14:00:46 -0400
| Newsgroups | gmane.comp.python.education |
|---|---|
| Message-ID | <CACfEFw-FR5+d-PNDO62DjVezmuaRqiqDtfEia7RvmaCGzeHY1w@mail.gmail.com> |
--===============7310254313674800508== Content-Type: multipart/alternative; boundary="0000000000008f400906382ce08b" --0000000000008f400906382ce08b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Here's the link to that PR, which makes things testable and then verifies 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]> wro= te: > 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 contro= l > 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/OYZ2QPDY= DFRV2PPJXEOHUTFWFPZVOCJO/ > > Maybe a good prompt to lock in that automated testing is much more > efficient than attempting to manually test everything after every change: > > "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 <edu-sig@py= thon.org> > 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_play.= 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] >> > --0000000000008f400906382ce08b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto">Here's the link to that PR, which makes things testab= le and then verifies with test assertions:<div dir=3D"auto"><br></div><div = dir=3D"auto"><a href=3D"https://github.com/4dsolutions/python_camp/pull/4" = target=3D"_blank" rel=3D"noreferrer">https://github.com/4dsolutions/python_= camp/pull/4</a></div><div dir=3D"auto"><br></div><div dir=3D"auto">... @sta= ticmethod is for when you want to add a method on a class that doesn't = take self as the first parameter.=C2=A0</div></div><br><div class=3D"gmail_= quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, Jun 22, 2025, 1:52=E2= =80=AFPM Wes Turner <<a href=3D"mailto:[email protected]" target=3D"_= blank" rel=3D"noreferrer">[email protected]</a>> wrote:<br></div><blo= ckquote 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"auto"><div dir=3D= "auto">How to best phase in Python?</div><div dir=3D"auto"><br></div><div d= ir=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><di= v 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 Tr= ue</div><div dir=3D"auto"><br></div><div dir=3D"auto">print(1+1 =3D=3D True= )</div><div dir=3D"auto"><br></div><div dir=3D"auto">assert 1+1 =3D=3D True= </div><div dir=3D"auto">print("It did not raise 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 AssertionErr= or is an Exception, and control flow is interrupted on Exception")</di= v><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 assumptions about types and value= s of parameters and return values at runtime; we check preconditions and po= st conditions.</div><div dir=3D"auto"><br></div><div dir=3D"auto">I am remi= nded of camper_program.py from 2020:=C2=A0</div><a href=3D"https://mail.pyt= hon.org/archives/list/[email protected]/message/OYZ2QPDYDFRV2PPJXEOHUTFWFP= ZVOCJO/" rel=3D"noreferrer noreferrer" target=3D"_blank">https://mail.pytho= n.org/archives/list/[email protected]/message/OYZ2QPDYDFRV2PPJXEOHUTFWFPZV= OCJO/</a><div dir=3D"auto"><br></div><div dir=3D"auto">Maybe a good prompt = to lock in that automated testing is much more efficient than attempting to= manually test everything after every change:</div><div dir=3D"auto"><br></= div><div dir=3D"auto">"Write 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:edu-sig@python.= org" rel=3D"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"><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"fon= t-family:verdana,sans-serif;font-size:small">From an educator's perspec= tive, how 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-serif;font-size:small">One answer is: use it the same way you might us= e a calculator in the classroom, but show off why it's better.</div><di= v 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">An example (new today) of what I share with my= student and peer faculty, perhaps new to Python:</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"><a href=3D"https://github.com/4dsolutions/School_of_Tomorrow/bl= ob/master/smod_play.py" rel=3D"noreferrer noreferrer noreferrer" target=3D"= _blank">https://github.com/4dsolutions/School_of_Tomorrow/blob/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_default" style=3D= "font-family:verdana,sans-serif;font-size:small">A mix of Python=C2=A0+ geo= metric content already familiar to those using my curriculum.</div><div cla= ss=3D"gmail_default" style=3D"font-family:verdana,sans-serif;font-size:smal= l"><br></div><div class=3D"gmail_default" style=3D"font-family:verdana,sans= -serif;font-size:small">The docstring itself contains a link 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" target=3D"_blank">[email protected]</a><br> To unsubscribe send an email to <a href=3D"mailto:[email protected]"= rel=3D"noreferrer noreferrer noreferrer" target=3D"_blank">edu-sig-leave@p= ython.org</a><br> <a href=3D"https://mail.python.org/mailman3//lists/edu-sig.python.org" rel= =3D"noreferrer 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 n= oreferrer noreferrer" target=3D"_blank">[email protected]</a><br> </blockquote></div></div></div> </blockquote></div> --0000000000008f400906382ce08b-- --===============7310254313674800508== 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] --===============7310254313674800508==--