473,230 Members | 1,644 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,230 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 4433
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: VivesProcSPL | last post by:
Obviously, one of the original purposes of SQL is to make data query processing easy. The language uses many English-like terms and syntax in an effort to make it easy to learn, particularly for...
3
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 3 Jan 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). For other local times, please check World Time Buddy In...
0
by: abbasky | last post by:
### Vandf component communication method one: data sharing ​ Vandf components can achieve data exchange through data sharing, state sharing, events, and other methods. Vandf's data exchange method...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 7 Feb 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:30 (7.30PM). In this month's session, the creator of the excellent VBE...
0
by: stefan129 | last post by:
Hey forum members, I'm exploring options for SSL certificates for multiple domains. Has anyone had experience with multi-domain SSL certificates? Any recommendations on reliable providers or specific...
0
Git
by: egorbl4 | last post by:
Скачал я git, хотел начать настройку, а там вылезло вот это Что это? Что мне с этим делать? ...
1
by: davi5007 | last post by:
Hi, Basically, I am trying to automate a field named TraceabilityNo into a web page from an access form. I've got the serial held in the variable strSearchString. How can I get this into the...
0
by: MeoLessi9 | last post by:
I have VirtualBox installed on Windows 11 and now I would like to install Kali on a virtual machine. However, on the official website, I see two options: "Installer images" and "Virtual machines"....
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...

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.