On Fri, May 14, 2021 at 07:05:43PM -0000, Martin Teichmann wrote:
> Hi Paul,
>
> > Also consider the section in the PEP format "How would we teach this?"
> > How would you explain to someone with no programming background, maybe
> > a high school student, that 3/4 and 3 / 4 mean different things in
> > Python? Your audience might not even know that there is a difference
> > between "fraction", "decimal" and "float" at this stage.
>
> Well, I think a high school student would be the one with the least
> problems: s/he would just realize "wow, that thing can do fractions! I
> can do my math homework with that!" And I can tell you, kids will be
> the first ones to figure out that if you type spaces you get decimals,
> if you do not type spaces you get fractions. They are used to this
> kind of stuff from their math class, from calculators (or their
> phones, I guess).
*raises hand*
Not any students I work with.
No text book I've seen teaches that `1 / 2` and `1/2` are different
things (one a rational fraction and the other a decimal). And no
calculator I've seen, and I've seen a lot (I'm a bit of a calculator
geek...) treats them differently. Most scientific calculators don't even
have a way of entering spaces.
Both the Texas Instruments "Nspire" and Casio "Classpad" have a global
setting that controls whether calculations between integers result in
exact fractional, or symbolic, values, or a potentially inexact decimal
approximation. The Nspire also allows the user to force a decimal by
using a decimal point in any of the input values. Spaces make no
difference in either.
In Python it would be odd to have space sensitivity for operators. For
every operator ⊕, the presence or absence of surrounding spaces makes no
difference, provided the operator can be unambiguously parsed:
>>> []or{}
{}
And it applies to the dot pseudo-operator, with the same restriction:
>>> str . find
<method 'find' of 'str' objects>
There's really only one common case where spaces make a difference:
float literals cannot contain spaces, so `1 .` is interpreted as the
dot pseudo-operator applied to the int 1, rather than the float `1.`
But that's a consequence of the parsing rules, not a difference in the
operator.
--
Steve
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/JTSGYHQVRLJRVHIBQBTPHBU6YXAMDBDF/
Code of Conduct: http://python.org/psf/codeofconduct/