2013-05-28 20 views
0
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** 

操作語法,我不明白爲什麼「或」經營者不工作無效,因爲「或」在Python

+0

你爲什麼有雙重'((..))' - 擺脫它之一。 – karthikr

回答

6

的問題是不是or,它是在最後的換行符。再也沒有開放的括號,所以換行符終止了if聲明;但是,if語句必須以冒號結尾,而您的語句不會與解析器結尾。括號

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]]): 

或包裹了整個事情:

要麼添加一個明確的續行

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建議後者。

+0

非常感謝您的提示 – vkaul11

1

嘗試:

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]]): 
相關問題