[Tutor] Fahrenheit to Celsius Conversion another problem and Programming Paradigm

Alan Gauld alan.gauld at yahoo.co.uk
Wed Jun 14 14:15:24 EDT 2017


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