473,385 Members | 1,888 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

True of False

I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?
Thanks.

Kou

Sep 27 '07 #1
16 4459
On Sep 27, 11:33 am, kou...@hotmail.com wrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?
Thanks.

Kou
,
You may want to include paren around ("c" in a) and a lower case p for
Print, i.e. print, and it should work

so eg:
a = ["a", "b", "c", "d", "e", "f"]

if ("c" in a) == True:
print "Yes"

Sep 27 '07 #2
On Thu, 27 Sep 2007 09:33:34 -0700, koutoo wrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?
Wow that's odd:

In [265]: a = list('abcdef')

In [266]: a
Out[266]: ['a', 'b', 'c', 'd', 'e', 'f']

In [267]: 'c' in a
Out[267]: True

In [268]: 'c' in a == True
Out[268]: False

In [269]: ('c' in a) == True
Out[269]: True

In [270]: 'c' in (a == True)
---------------------------------------------------------------------------
<type 'exceptions.TypeError' Traceback (most recent call last)

/home/bj/<ipython consolein <module>()

<type 'exceptions.TypeError'>: argument of type 'bool' is not iterable
What's going on there?

Ciao,
Marc 'BlackJack' Rintsch
Sep 27 '07 #3

kou...@hotmail.com wrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?
Thanks.

Kou
Hello,
Just try :

a = ["a","b","c","d","e","f"]
if "c" in a:
print "yes"

That is going to work as the statement '"c" in a' itself is true. You
could try that by typing "c" in a at the interpreter.

regards,
Shriphani Palakodety

Sep 27 '07 #4
On 9/27/07, ko****@hotmail.com <ko****@hotmail.comwrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?
Just use

if "c" in a:

and all will be well. The True object isn't the only truthy value in
Python - see <http://docs.python.org/lib/truth.html>.

--
Cheers,
Simon B.
si***@brunningonline.net
Sep 27 '07 #5
On Sep 27, 12:48 pm, "Simon Brunning" <si...@brunningonline.net>
wrote:
On 9/27/07, kou...@hotmail.com <kou...@hotmail.comwrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:
a = ["a", "b", "c", "d", "e", "f"]
if "c" in a == True:
Print "Yes"
When I run this, it runs, but nothing prints. What am I doing wrong?

Just use

if "c" in a:

and all will be well. The True object isn't the only truthy value in
Python - see <http://docs.python.org/lib/truth.html>.
I would recommend the OP try this:

run the (I)python shell and try the following:
>>a = [x for x in "abcdefg"]
a
['a','b','c','d','e','f','g']
>>"c" in a
True
>>"c" in a == True
False
>>("c" in a) == True
True

The reason your conditional failed is that it was interpreted as "c"
in (a == True) which is False.
the "==" operator binds at a higher precedence level than the "in"
operator, just as multiplication
binds higher than addition
Sep 27 '07 #6
Marc 'BlackJack' Rintsch <bj****@gmx.netwrote:
In [268]: 'c' in a == True
Out[268]: False

In [269]: ('c' in a) == True
Out[269]: True

In [270]: 'c' in (a == True)
-----------------------------------------------------------------------
----
<type 'exceptions.TypeError' Traceback (most recent call
last)

/home/bj/<ipython consolein <module>()

<type 'exceptions.TypeError'>: argument of type 'bool' is not iterable
What's going on there?
See http://docs.python.org/ref/comparisons.html
Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent
to x < y and y <= z, except that y is evaluated only once (but in both
cases z is not evaluated at all when x < y is found to be false).
In exactly the same way:

'c' in a == True

is equivalent to:

'c' in a and a == True

which is False.
Sep 27 '07 #7
ko****@hotmail.com wrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?
Thanks.
You are unnecessarily adding a comparison with True. The correct way to
write that is

if "c" in a:
print "yes"

Bu of course you haven't actually told us what you really did, because
the code you represent has syntax errors.
>>a = ["a", "b", "c", "d", "e", "f"]
"c" in a
True
>>if "c" in a == True:
.... print "found it"
....
>>if ("c" in a) == True:
.... print "At last!"
....
At last!
>>>
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden

Sorry, the dog ate my .sigline

Sep 27 '07 #8
On 27/09/2007, Casey <Ca******@gmail.comwrote:
On Sep 27, 12:48 pm, "Simon Brunning" <si...@brunningonline.net>
wrote:
On 9/27/07, kou...@hotmail.com <kou...@hotmail.comwrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:
a = ["a", "b", "c", "d", "e", "f"]
if "c" in a == True:
Print "Yes"
When I run this, it runs, but nothing prints. What am I doing wrong?
Just use

if "c" in a:

and all will be well. The True object isn't the only truthy value in
Python - see <http://docs.python.org/lib/truth.html>.

I would recommend the OP try this:

run the (I)python shell and try the following:
>a = [x for x in "abcdefg"]
a
['a','b','c','d','e','f','g']
>"c" in a
True
>"c" in a == True
False
>("c" in a) == True
True

The reason your conditional failed is that it was interpreted as "c"
in (a == True) which is False.
the "==" operator binds at a higher precedence level than the "in"
operator, just as multiplication
binds higher than addition
Actually it evaluates '("c" in a) and (a == True)'. You can check like so:

import dis
a = list("abcdef")
dis.dis(lambda: "c" in a == True)

And just follow the bytecode operations.

-- Richard.
--
http://mail.python.org/mailman/listinfo/python-list
Sep 27 '07 #9
On Thu, 2007-09-27 at 16:47 +0000, Marc 'BlackJack' Rintsch wrote:
On Thu, 27 Sep 2007 09:33:34 -0700, koutoo wrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?

Wow that's odd:

In [265]: a = list('abcdef')

In [266]: a
Out[266]: ['a', 'b', 'c', 'd', 'e', 'f']

In [267]: 'c' in a
Out[267]: True

In [268]: 'c' in a == True
Out[268]: False

In [269]: ('c' in a) == True
Out[269]: True

In [270]: 'c' in (a == True)
---------------------------------------------------------------------------
<type 'exceptions.TypeError' Traceback (most recent call last)

/home/bj/<ipython consolein <module>()

<type 'exceptions.TypeError'>: argument of type 'bool' is not iterable
What's going on there?
What's going on here is that both 'in' and '==' are comparison
operations, and Python allows you to chain comparisons. Just like "a < x
< b" is evaluated as "a < x and x < b", "'c' in a == True" is evaluated
as "'c' in a and a == True". Obviously, since a==True is false, the
chained comparison is False.

--
Carsten Haese
http://informixdb.sourceforge.net
Sep 27 '07 #10
On Sep 27, 1:12 pm, "Richard Thomas" <R.W.Thomas...@cantab.netwrote:
On 27/09/2007, Casey <Casey...@gmail.comwrote:
On Sep 27, 12:48 pm, "Simon Brunning" <si...@brunningonline.net>
wrote:
On 9/27/07, kou...@hotmail.com <kou...@hotmail.comwrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:
a = ["a", "b", "c", "d", "e", "f"]
if "c" in a == True:
Print "Yes"
When I run this, it runs, but nothing prints. What am I doing wrong?
Just use
if "c" in a:
and all will be well. The True object isn't the only truthy value in
Python - see <http://docs.python.org/lib/truth.html>.
I would recommend the OP try this:
run the (I)python shell and try the following:
>>a = [x for x in "abcdefg"]
>>a
['a','b','c','d','e','f','g']
>>"c" in a
True
>>"c" in a == True
False
>>("c" in a) == True
True
The reason your conditional failed is that it was interpreted as "c"
in (a == True) which is False.
the "==" operator binds at a higher precedence level than the "in"
operator, just as multiplication
binds higher than addition

Actually it evaluates '("c" in a) and (a == True)'. You can check like so:

import dis
a = list("abcdef")
dis.dis(lambda: "c" in a == True)

And just follow the bytecode operations.

-- Richard.
--
http://mail.python.org/mailman/listinfo/python-list
Doh, I forgot about operator chaining here. I'm so used to just
seeing a < b < c that I forget about arbitrary operator chaining and
think like a C++ programmer!

Sep 27 '07 #11

On Sep 27, 2007, at 11:47 AM, Marc 'BlackJack' Rintsch wrote:
On Thu, 27 Sep 2007 09:33:34 -0700, koutoo wrote:
>I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?

Wow that's odd:

In [265]: a = list('abcdef')

In [266]: a
Out[266]: ['a', 'b', 'c', 'd', 'e', 'f']

In [267]: 'c' in a
Out[267]: True

In [268]: 'c' in a == True
Out[268]: False

In [269]: ('c' in a) == True
Out[269]: True

In [270]: 'c' in (a == True)
----------------------------------------------------------------------
-----
<type 'exceptions.TypeError' Traceback (most recent
call last)

/home/bj/<ipython consolein <module>()

<type 'exceptions.TypeError'>: argument of type 'bool' is not iterable
What's going on there?
That is weird. Given 270, what's happening in 268.

Erik Jones

Software Developer | Emma®
er**@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com
Sep 27 '07 #12
Richard Thomas wrote:
On 27/09/2007, Casey <Ca******@gmail.comwrote:
>On Sep 27, 12:48 pm, "Simon Brunning" <si...@brunningonline.net>
wrote:
>>On 9/27/07, kou...@hotmail.com <kou...@hotmail.comwrote:
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?

Just use

if "c" in a:

and all will be well. The True object isn't the only truthy value in
Python - see <http://docs.python.org/lib/truth.html>.
I would recommend the OP try this:

run the (I)python shell and try the following:

>>>>a = [x for x in "abcdefg"]
a
>
['a','b','c','d','e','f','g']
>>>>"c" in a
>
True
>>>>"c" in a == True
>
False
>>>>("c" in a) == True
>
True

The reason your conditional failed is that it was interpreted as "c"
in (a == True) which is False.
the "==" operator binds at a higher precedence level than the "in"
operator, just as multiplication
binds higher than addition


Actually it evaluates '("c" in a) and (a == True)'. You can check like so:

import dis
a = list("abcdef")
dis.dis(lambda: "c" in a == True)

And just follow the bytecode operations.
Yikes. So I did that and you're correct. I've always looked at
chained comparisons with mild suspicion. Now I guess that suspicion is
justified. Interpreting
a<b<c
as
a<b and b<c
make perfect sense to me, but interpreting
"c" in a == True
as
("c" in a) and (a == True)
is not at all natural.

Gary Herron
-- Richard.

>--
http://mail.python.org/mailman/listinfo/python-list

Sep 27 '07 #13

On Sep 27, 2007, at 12:29 PM, Erik Jones wrote:
>
On Sep 27, 2007, at 11:47 AM, Marc 'BlackJack' Rintsch wrote:
>On Thu, 27 Sep 2007 09:33:34 -0700, koutoo wrote:
>>I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing
wrong?

Wow that's odd:

In [265]: a = list('abcdef')

In [266]: a
Out[266]: ['a', 'b', 'c', 'd', 'e', 'f']

In [267]: 'c' in a
Out[267]: True

In [268]: 'c' in a == True
Out[268]: False

In [269]: ('c' in a) == True
Out[269]: True

In [270]: 'c' in (a == True)
---------------------------------------------------------------------
-
-----
<type 'exceptions.TypeError' Traceback (most recent
call last)

/home/bj/<ipython consolein <module>()

<type 'exceptions.TypeError'>: argument of type 'bool' is not
iterable
What's going on there?

That is weird. Given 270, what's happening in 268.

Erik Jones
Cool, Richard Thomas answered this one for me.

Erik Jones

Software Developer | Emma®
er**@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com
Sep 27 '07 #14
On Thu, 27 Sep 2007 17:06:30 +0000, Duncan Booth wrote:
Marc 'BlackJack' Rintsch <bj****@gmx.netwrote:
>In [268]: 'c' in a == True
Out[268]: False

In [269]: ('c' in a) == True
Out[269]: True

In [270]: 'c' in (a == True)
-----------------------------------------------------------------------
----
<type 'exceptions.TypeError' Traceback (most recent call
last)

/home/bj/<ipython consolein <module>()

<type 'exceptions.TypeError'>: argument of type 'bool' is not iterable
What's going on there?

See http://docs.python.org/ref/comparisons.html
>Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent
to x < y and y <= z, except that y is evaluated only once (but in both
cases z is not evaluated at all when x < y is found to be false).

In exactly the same way:

'c' in a == True

is equivalent to:

'c' in a and a == True

which is False.
Aaah *enlightenment*, I'm using this for range checks like in the docs,
but it wasn't obvious to me in this case. Thanks.

Ciao,
Marc 'BlackJack' Rintsch
Sep 27 '07 #15
Casey <Ca******@gmail.comwrote:
I would recommend the OP try this:

run the (I)python shell and try the following:
>>>a = [x for x in "abcdefg"]
a
['a','b','c','d','e','f','g']
>>>"c" in a
True
>>>"c" in a == True
False
>>>("c" in a) == True
True

The reason your conditional failed is that it was interpreted as "c"
in (a == True) which is False.
That was my first thought, too. But watch:
>>a = list("abcde")
a
['a', 'b', 'c', 'd', 'e']
>>"c" in (a == True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable

Then it dawned on me (is this the right phrase?): It's the same situation
as e.g. x < y >= 1, which means the same as "x < y and y >= 1" (except
that y is only evaluated once). So '"c" in a == True' gets evaluated as
'"c" in a and a == True'.
the "==" operator binds at a higher precedence level than the "in"
operator, just as multiplication binds higher than addition
Operator precedence plays no role in this case. It is a case of
'chained' comparisons.

Hope that clears it up
Marc
Sep 27 '07 #16
ko****@hotmail.com a écrit :
I tried writing a true and false If statement and didn't get
anything? I read some previous posts, but I must be missing
something. I just tried something easy:

a = ["a", "b", "c", "d", "e", "f"]

if "c" in a == True:
Print "Yes"

When I run this, it runs, but nothing prints. What am I doing wrong?
See other answers for the details. Anyway, since '"c" in a' is already a
boolean expression, testing the result of the evaluation of this
expression against a boolean is a pure waste of time. The usual idiom -
and this is definitively not Python-specific - is:

if "c" in a:
print "Yes"

Also, in Python (and in some other languages too), there's a notion of
"something" vs "nothing" - where, in a boolean context, "something"
evals to true and "nothing" to false. wrt/ Python, the empty string, an
empty container (list, tuple, dict, set etc), numerical zero's (int or
float), and of course the None object all eval to false, and most other
objects eval to true.
Sep 27 '07 #17

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

46
by: Scott Chapman | last post by:
There seems to be an inconsistency here: Python 2.3.2 (#1, Oct 3 2003, 19:04:58) on linux2 >>> 1 == True True >>> 3 == True False >>> if 1: print "true" ....
3
by: drs | last post by:
I just upgraded my Python install, and for the first time have True and False rather than 1 and 0. I was playing around at the command line to test how they work (for instance, "if 9:" and "if...
35
by: Steven Bethard | last post by:
I have lists containing values that are all either True, False or None, e.g.: etc. For a given list: * If all values are None, the function should return None.
14
by: Walter Dnes (delete the 'z' to get my real address | last post by:
I took a C course some time ago, but I'm only now beginning to use it, for a personal pet project. My current stumbling-block is finding an efficient way to find a match between the beginning of a...
48
by: Skybuck Flying | last post by:
Hi, I came across this C code which I wanted to understand etc it looked like this: if (-1) etc It made me wonder what the result would be... true or false ? In C and Delphi
1
by: Edward | last post by:
I am having a terrible time getting anything useful out of a listbox on my web form. I am populating it with the results from Postcode lookup software, and it is showing the results fine. What...
4
by: Wayne Wengert | last post by:
I am using VB in a VSNET 2003 Windows application. I've run into a situation where, when trying to set a bit value in a SQL Server 2000 database I get errors because the values extracted from a...
59
by: Pierre Quentel | last post by:
Hi all, In some program I was testing if a variable was a boolean, with this test : if v in My script didn't work in some cases and I eventually found that for v = 0 the test returned True ...
30
by: Jason | last post by:
I am fairly new to ASP--I have been using it about 2 months. I did these tests (below), and it doesn't make sense to me. False is equal to 0, and that's fine. True should be equal to 1, but it's...
71
by: David T. Ashley | last post by:
Where is the best place to define TRUE and FALSE? Are they in any of the standard include files, ever? Do any standards apply? What I've traditionally done is something like: #ifndef...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.