Re: Using Python as a Calculator

Wes Turner via Edu-sig <[email protected]> Sun, 22 Jun 2025 13:52:09 -0400
Newsgroups gmane.comp.python.education
Message-ID <CACfEFw_9SxzPkNYcU7EzGMhyz-3Jr0iJF-CxQFD8BcvtEfzSyQ@mail.gmail.com>
--===============2637815267099985830==
Content-Type: multipart/alternative; boundary="000000000000b18c1d06382cc1d6"

--000000000000b18c1d06382cc1d6
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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/OYZ2QPDYDF=
RV2PPJXEOHUTFWFPZVOCJO/

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@pyth=
on.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.p=
y
>
> 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]
>

--000000000000b18c1d06382cc1d6
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div 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 ti=
me 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"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(&quot;It did =
not raise AssertionError&quot;)</div><div dir=3D"auto"><br></div><div dir=
=3D"auto">assert 1+1 =3D=3D False</div><div dir=3D"auto">print(&quot;This w=
on&#39;t run, because AssertionError is an Exception, and control flow is i=
nterrupted on Exception&quot;)</div><div dir=3D"auto"><br></div><div dir=3D=
"auto"><br></div><div dir=3D"auto"># %%</div><div dir=3D"auto">import unitt=
est</div><div dir=3D"auto">test =3D unittest.TestCase()</div><div dir=3D"au=
to"><br></div><div dir=3D"auto">test.assertEqual(1+1, 0)</div><div dir=3D"a=
uto">```</div><div dir=3D"auto"><br></div><div dir=3D"auto">We verify our a=
ssumptions about types and values of parameters and return values at runtim=
e; we check preconditions and post conditions.</div><div dir=3D"auto"><br><=
/div><div 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]/me=
ssage/OYZ2QPDYDFRV2PPJXEOHUTFWFPZVOCJO/">https://mail.python.org/archives/l=
ist/[email protected]/message/OYZ2QPDYDFRV2PPJXEOHUTFWFPZVOCJO/</a><div di=
r=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 e=
verything after every change:</div><div dir=3D"auto"><br></div><div dir=3D"=
auto">&quot;Write your own test assertion library; starting with `def asser=
tEqual(a, b, msg)`&quot;<br><br><div class=3D"gmail_quote gmail_quote_conta=
iner" dir=3D"auto"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, Jun 22, 20=
25, 1:19=E2=80=AFPM kirby urner via Edu-sig &lt;<a href=3D"mailto:edu-sig@p=
ython.org">[email protected]</a>&gt; wrote:<br></div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,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 cla=
ss=3D"gmail_default" style=3D"font-family:verdana,sans-serif;font-size:smal=
l">From an educator&#39;s perspective, how to best phase-in Python is often=
 a core question.=C2=A0</div><div class=3D"gmail_default" style=3D"font-fam=
ily:verdana,sans-serif;font-size:small"><br></div><div class=3D"gmail_defau=
lt" style=3D"font-family:verdana,sans-serif;font-size:small">One answer is:=
 use it the same way you might use a calculator in the classroom, but show =
off why it&#39;s better.</div><div class=3D"gmail_default" style=3D"font-fa=
mily:verdana,sans-serif;font-size:small"><br></div><div class=3D"gmail_defa=
ult" style=3D"font-family:verdana,sans-serif;font-size:small">An example (n=
ew 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"fon=
t-family:verdana,sans-serif;font-size:small"><a href=3D"https://github.com/=
4dsolutions/School_of_Tomorrow/blob/master/smod_play.py" target=3D"_blank" =
rel=3D"noreferrer">https://github.com/4dsolutions/School_of_Tomorrow/blob/m=
aster/smod_play.py</a></div><div class=3D"gmail_default" style=3D"font-fami=
ly:verdana,sans-serif;font-size:small"><br></div><div class=3D"gmail_defaul=
t" style=3D"font-family:verdana,sans-serif;font-size:small">A mix of Python=
=C2=A0+ geometric content already familiar to those using my curriculum.</d=
iv><div class=3D"gmail_default" style=3D"font-family:verdana,sans-serif;fon=
t-size:small"><br></div><div class=3D"gmail_default" style=3D"font-family:v=
erdana,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-fami=
ly:verdana,sans-serif;font-size:small">Kirby</div><div class=3D"gmail_defau=
lt" style=3D"font-family:verdana,sans-serif;font-size:small"><br></div></di=
v>
_______________________________________________<br>
Edu-sig mailing list -- <a href=3D"mailto:[email protected]" target=3D"_bl=
ank" rel=3D"noreferrer">[email protected]</a><br>
To unsubscribe send an email to <a href=3D"mailto:[email protected]"=
 target=3D"_blank" rel=3D"noreferrer">[email protected]</a><br>
<a href=3D"https://mail.python.org/mailman3//lists/edu-sig.python.org" rel=
=3D"noreferrer noreferrer" target=3D"_blank">https://mail.python.org/mailma=
n3//lists/edu-sig.python.org</a><br>
Member address: <a href=3D"mailto:[email protected]" target=3D"_blank" r=
el=3D"noreferrer">[email protected]</a><br>
</blockquote></div></div></div>

--000000000000b18c1d06382cc1d6--

--===============2637815267099985830==
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]

--===============2637815267099985830==--