2016-07-14 73 views
-1

有人可以說爲什麼python不允許這樣做?Python給出語法錯誤,但沒有錯誤?

# -*- coding: utf-8 -* 
import win32api,win32con,os,time,sys 
x_pad =464 
y_pad =235 

def tik(): 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0) 
    time.sleep(.1) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0) 
    print "Click.".decode('utf-8').encode(sys.stdout.encoding)  #completely optional. But nice for debugging purposes. 
def basilitut(): 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0) 
    time.sleep(.1) 
    print 'Hold'.decode('utf-8').encode(sys.stdout.encoding) 


def birak(): 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0) 
    time.sleep(.1) 
    print 'Release.'.decode('utf-8').encode(sys.stdout.encoding) 

def mousePos(cord): 
    win32api.SetCursorPos((x_pad + cord[0], y_pad + cord[1]) 



def oyun(): 
    #Ses kes 
    mousePos((163, 251)) 
    tik() 
    time.sleep(.1) 
    #Play butonu 
    mousePos((161, 127)) 
    tik() 
    time.sleep(.1) 

    #Iphone 
    mousePos((149, 267)) 
    tik() 
    time.sleep(.1) 

    #Merhaba 
    mousePos((373, 314)) 
    tik() 
    time.sleep(.1) 

    #Goal 
    mousePos((163, 251)) 
    tik() 
    time.sleep(.1) 

File "C:\Users\Doruk\Desktop\Python\Bot\code.py", line 27

def oyun():

^

SyntaxError: invalid syntax

當我刪除高清奧雲():blablabla

File "C:\Users\Doruk\Desktop\Python\Bot\code.py", line 24

              ^SyntaxError: invalid syntax 

它只是給出了空行的錯誤。

當我刪除

def mousePos(cord): 
    win32api.SetCursorPos((x_pad + cord[0], y_pad + cord[1]) 

它的工作原理,但我不能讓我的程序沒有他們。

+0

在調試語法錯誤時,通常可以幫助將其解釋爲「在這個'def foo之前我期待看到其他東西(...'」 – JETM

+0

錯誤報告在它們被檢測到的行*上, – cdarke

回答

2

看代碼立即報告錯誤上面:

def mousePos(cord): 
    win32api.SetCursorPos((x_pad + cord[0], y_pad + cord[1]) 

你缺少一個右括號。

+0

哇,對不起,我認爲這是一樣的類型錯誤等,並顯示它的確切位置。我學到了一些新東西。謝謝。 –

+0

錯誤是由於Python允許您在打開括號時將表達式繼續到下一行而導致的。所以Python並不抱怨你沒有關閉括號;這是完全有效的,你可能故意這樣做。這是抱怨,因爲你試圖把一個函數定義在括號內,並且在那裏是無效的。這就是爲什麼它在'def'行給你一個錯誤。 – kindall

2

你確定沒有語法錯誤?

win32api.SetCursorPos((x_pad + cord[0], y_pad + cord[1]) 
        12        2 1??? 

在出現語法錯誤時,語法錯誤報告的行不是必需的。它只是第一個語法錯誤導致解析器意識到錯誤的地方。

+0

哇,對不起,我不知道它在第一次看到時會給出語法錯誤,我認爲它與類型錯誤等相同,表明確切的錯誤。 –

+0

類型錯誤通常是正確的同樣的一行,當你像'int = string'這樣做的時候,但是像你這樣缺少標點符號,這不一定是錯誤的,因爲代碼可能會在下一行中出現,並且完全正確 –

+0

我是新的對這個事情抱歉,這個愚蠢的問題:( –