[Tutor] Fahrenheit to Celsius Conversion another problem and Programming Paradigm
William Gan
ganwilliam at outlook.com
Thu Jun 15 14:11:14 EDT 2017
Hi Alan,
Very much thanks again for your help.
Your elucidation helped me gain better understanding on this issue. I have resolved that error.
Thank you also for your counsel on this second issue.
Best regards.
-----Original Message-----
From: Alan Gauld [mailto:alan.gauld at yahoo.co.uk]
Sent: Thursday, June 15, 2017 2:15 AM
To: tutor at python.org
Subject: Re: [Tutor] Fahrenheit to Celsius Conversion another problem and Programming Paradigm
On 14/06/17 15:20, William Gan wrote:
> print('Enter C for Celsius to Fahrenheit or F for Fahrenheit to
> Celsius.')
>
> if unit == 'C' or 'c':
You have hit a common error for beginners. reading this as a human it is quite clear what is meant but the computer sees it differently. It sees:
if (unit == 'C') or 'c':
Now, a non empty string like 'c' is always considered True in a boolean context so, the interpreter interprets it as:
if (unit == 'C') or True:
And since any 'or' test where one element is True is evaluated to True
it reads as
if True:
and so the 'if' part is always executed.
How to avoid this? There are several options:
if unit == 'C' or unit == 'c':
But that gets cumbersome if more than two values.
Better is:
if unit in ('C','c'):
This is best if there are multiple true options not just upper/lower case or
if unit.lower() == 'c':
This is best is the strings are longer than a single letter. (You can use unit.upper() too, that's just an arbitrary choice)
> 1. Is it possible that I may not have the right aptitude
or mental paradigm to do computer programming?
Possible, but unlikely, most folks with a basic math ability can pick up programming. You may not be a natural, and may never be a programming guru, but you should be able to get to the stage of competence.
> However, I am having difficulty learning it.
It is difficult, despite what some books would have you believe.
If it wasn't difficult there would be no need to teach it as a university subject!
You have to train your mind to think like a computer (as in the case above) and to break things down into often painfully detailed steps. But that is just practice.
> I have been learning for a few months already and I am not learning
> fast enough.
Says who? I've been programming for over 40 years and am still learning new things every week.
Don't give up, and keep asking questions.
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos
More information about the Tutor
mailing list