[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