• Zeth will be attending PyCon UK on the 12th to 14th September 2008.

What is truth? - part 2 - true vs one

15 July 2007

So following on from part one, we have True and False in Python, which are somewhat equivalent to the Boolean 1 and 0:

> "The two-element Boolean algebra is the simplest Boolean algebra, ... having just two elements, named 1 and 0 by convention." Source

So we have 1 and 0, True and False, you can think of a light switch that has two states, on and off.

This gives us four sums:

0 + 0 = 0 i.e. two wrongs don't make a right.

0 + 1 = 1 i.e. a right is not negated by a wrong, a lie cannot negate the truth.

1 + 0 = 1

1 + 1 = 1 i.e. a pair of rights are right, a pair of truths are true.

Now look at the following interactive Python session:

> >>> False + False == True > > False # two wrongs do not make a right. > > >>> False + True == True > > True # a right is not negated by a wrong > > >>> True + False == True > > True # a right is not negated by a wrong

Makes sense so far, but lastly:

> >>> True + True == True > > False # two rights make a wrong!

This is of course opposite to what we, at first, might expect.

What's going on here?

Well in Python, unlike some other dynamic languages, the arithmetic operators are separate from the Boolean comparison operators:

> >>> True + True == False > > True > > >>> (True and True) == True > > True

Another thing that gets everyone once is that the assignment operator (=) is different from the comparison operator (==). Anyway, to get the complete Boolean behaviour, you need to write the operators out in words, i.e. and, or, not, etc.

Otherwise, when using the arithmetic operators, Python converts the Boolean values (true false) into integers (1 0) when it interprets the code:

> >>> True + True == 2 * True > > True > > >>> (True and True) == 2 * True > > False > > >>> False + False == 2 * False > > True > > >>> (False and False) == 2 * False > > True

What do you have to say?

Show Editing Help


PyCon UK

About

Hello, my name is Zeth, I'll be your host here.

Command Line Warriors is about taking control of your own technology, it looks at our experiences of computing; especially using GNU/Linux, the Python programming language, the command-line and issues such as techno-ethics, best practices and whatever is cool now. If you take control of your technology then you are a Warrior too!

This site is your site too which means that you can contribute and get involved. You can leave comments using the facility provided. For me, the comments and discussions are by far the best part of the site. So please do have your say!

Latest Discussions

deesha

September 8, 2008
hey all, i just wanted to check the other stuf if nay1 can help me what i want is i have to convert the line starting with my function name ...
Email Syntax Check in Python

Daniel Black

September 3, 2008
Hey, sounds good already. There's another Python script for command-line 140-character-messaging (won't call it "tweeting" for obvious reasons), Tweety Py, that's currently languishing. Not, I think, because the developer's disinterested, ...
Using new social networking service Identi.ca from the command line

Antonio Araujo

September 2, 2008
Dear friends, has anyone built debian packages of db xml 2.4.13? Best regards Antonio
Native XML storage with Berkeley DB XML - part one

Zeth

September 1, 2008
Thanks everyone for your different solutions, absolutely fantastic. I have tried them all. The one from Ciaran McCreesh was the one I was subconsciously groping for.
Sisu and typing unicode in GNOME

andylockran

September 1, 2008
In ubuntu, I do ctrl, and the functions to the right of my keyboard for extra characters. Such as: alt gr + ; + e for é I'll post more ...
Sisu and typing unicode in GNOME

Jinks

September 1, 2008
I am from Germany but i use an US-layout keyboard since that's a lot easier for most my programming needs. Now, having to also write the occassional german letter or ...
Sisu and typing unicode in GNOME

Toni

September 1, 2008
Hi, You might want to add an xkb keymap. Make backups before you begin ;) And sorry about formatting. in /usr/share/X11/xkb/symbols/gb, after "intl", add this: partial alphanumeric_keys xkb_symbols "intl_fi" { ...
Sisu and typing unicode in GNOME

Ciaran McCreesh

September 1, 2008
On a UK keyboard you do alt-gr+[ followed by a to get ä. You don't need the control key at all.
Sisu and typing unicode in GNOME

name

September 1, 2008
Hi!,
List files recursively by modified time

name

September 1, 2008
Hello!,
List files recursively by modified time

Leif

September 1, 2008
On my Norwegian keyboard, the diaeresis is easily accessible, like on Jani's Finnish one. It's one of the few keys that doesn't advance the cursor, along with the tilde, circumflex ...
Sisu and typing unicode in GNOME

Lornix

September 1, 2008
ä <= compose, ", a ö <= compose, ", o å <= compose, o, a Ä <= compose, ", A Ö <= compose, ", O Å <= compose, o, A ...
Sisu and typing unicode in GNOME

name

September 1, 2008
Good day!,
List files recursively by modified time