vkaul11
vkaul11

Reputation: 4214

invalid syntax because of 'OR' operation in python

straightrunfaces = 'A23456789TJQKA';
for i in range(0,10):
        if ((counts[straightrunfaces[i]] and 
             counts[straightrunfaces[i+1]] and 
             counts[straightrunfaces[i+2]] and 
             counts[straightrunfaces[i+3]])) or
            ((counts[straightrunfaces[i+1]] and 
             counts[straightrunfaces[i+2]] and 
             counts[straightrunfaces[i+3]] and 
             counts[straightrunfaces[i+4]])):



C:\datasci_course_materials\assignment3>python poker.py
  File "poker.py", line 62
    counts[straightrunfaces[i+3]])) or
                                     ^
**SyntaxError: invalid syntax**

I don't understand why the 'OR' operator is not working

Upvotes: 1

Views: 1098

Answers (2)

karthikr
karthikr

Reputation: 99620

Try:

straightrunfaces = 'A23456789TJQKA';
for i in range(0,10):
    if all(counts[straightrunfaces[i]], counts[straightrunfaces[i+1]], counts[straightrunfaces[i+2]], counts[straightrunfaces[i+3]]) or all(counts[straightrunfaces[i+1]], counts[straightrunfaces[i+2]], counts[straightrunfaces[i+3]], counts[straightrunfaces[i+4]]):

Upvotes: 0

Cairnarvon
Cairnarvon

Reputation: 27772

The problem isn't the or, it's the newline at the end. There are no open parentheses anymore, so the newline terminates the if statement; however, an if statement must end in a colon, and yours doesn't, to the parser.

Either add an explicit line continuation:

if (counts[straightrunfaces[i]] and 
    counts[straightrunfaces[i+1]] and 
    counts[straightrunfaces[i+2]] and 
    counts[straightrunfaces[i+3]]) or \
   (counts[straightrunfaces[i+1]] and 
    counts[straightrunfaces[i+2]] and 
    counts[straightrunfaces[i+3]] and 
    counts[straightrunfaces[i+4]]):

Or wrap the whole thing in parentheses:

if ((counts[straightrunfaces[i]] and 
     counts[straightrunfaces[i+1]] and 
     counts[straightrunfaces[i+2]] and 
     counts[straightrunfaces[i+3]]) or
    (counts[straightrunfaces[i+1]] and 
     counts[straightrunfaces[i+2]] and 
     counts[straightrunfaces[i+3]] and 
     counts[straightrunfaces[i+4]])):

PEP 8 recommends the latter.

Upvotes: 7

Related Questions