On Thu, Apr 9, 2020 at 2:02 PM kirby urner <kirby.ur...@gmail.com> wrote:

> Here's a thread I'm starting with my campers taking a PyCamp course.
>
> Yesterday we were co-evolving a calculator driven by looping menu.  It
> does squares and square roots (one of the campers supplied this logic) and
> I was just getting around to introducing the y^x key as some call it, i.e.
> any number to any power, Python's pow(num, exp).
>
> Today we'll pick up where we left off.
>
> We used the shared whiteboard to draw radical signs as I intoned about how
> pow(3, 3) means like ```3 * 3 * 3```.  Math Adventures in Python.  We might
> also say ```3 ** 3``` (and not ```3^3``` like in so many languages).
> sqrt(num) is the same as ```num ** (1/2)``` and we can get the 3rd root of
> 27 with ```27 ** (1/3)```.
>
> [ Sorry for all the markdown by the way, if you're getting a plaintext
> version -- an option I'd advocate for browser based viewers of the archives
> someday (to see what it looked like way back when, Before Markdown). ]
>
> So here's what we're up against:  say I want to raise 10 to the 1/3rd
> power, same as taking a "cube root" of 10 (tetrahedral whatever).  The menu
> prompts:
>
> ```python
>
> num = float(input("Your number please: > "))  # yes a bit dangerous
> exp = float(input("...and your exponent: > "))  #  user wants to do 1/3
> ```
>
> Of course that last statement raises an exception because float("1/3")
> doesn't work (isn't supposed to). What shall we do then?
>


Try the following:

from fractions import Fraction
float(Fraction("1/3"))

Knowing you, I'm sure you can figure out plenty of useful applications of
this. :-)

André



>
> I'm thinking we parse anything that looks like a legal fraction and do the
> floating point conversion from int(p)/int(q).  We won't allow input like
> 2.1/3.6 just int/int.  I've already preached against eval() but if it
> passes my regular expression test first...
>
> Anyway, it's a discussion.  These are like middle schoolers previewing
> high school, at a time when kid focused code schools were under some
> pressure to convert to "everything online".  I used to drive to the schools.
>
> We don't have to use a regexp!  A good excuse to say what these are
> though.  Or test for the pattern but then use split("/") to pry numerator
> from denominator, once we know that'll work?
>
> https://github.com/4dsolutions/python_camp/blob/master/camper_program.py
> (snapshot -- part of the camp is they watch me git pushing updates to the
> camp repo).
>
> Rather perversely, I may set things back between camps i.e. I'll
> deliberately revert the code.
>
> Comments?  Code?
>
> Kirby
>
> PS:  I notice Python 3.8 is being rather more generous in its statistics
> module. Campers who wander from the base camp fire are likely to find
> themselves staring at pdfs and cdfs.
> _______________________________________________
> Edu-sig mailing list -- edu-sig@python.org
> To unsubscribe send an email to edu-sig-le...@python.org
> https://mail.python.org/mailman3/lists/edu-sig.python.org/
>
_______________________________________________
Edu-sig mailing list -- edu-sig@python.org
To unsubscribe send an email to edu-sig-le...@python.org
https://mail.python.org/mailman3/lists/edu-sig.python.org/

Reply via email to