2014-02-23 63 views
2

我寫了這個函數作爲我試圖在pygame中製作的滾動面板的一部分。該函數是一個名爲slot的類的一部分,該類是面板類的一部分,slot是包含字符串或數據的面板上的條。此方法將插槽繪製到屏幕上,如果屏幕位於插槽之間,則只繪製插槽的一部分。該IF/ELIF /別的語法絆倒了我,讓python,如果/ elif/else語法按註釋拆分?

def mydraw(self,my_pygame,scrn,panel_x,panel_y,scroll_at,window_size,virtual_size): 
     if((self.y<(scrollat+window_size))or((self.e_y)>scrollat)): 
      onscreensy = (self.y-scrollat)+panel_y 
      onscreeney = onscreensy + self.dim_y 
      """the top case""" 
      if(onscreensy<panel_y): 
       onscrnwidth = (onscreensy+self.dim_y)-panel_y 
       onbitmapwidth = self.dim_y-onscrnwidth 
       holder = self.bitmap.subsurface(0,onbitmapwidth-1,self.dim_x,onbitmapwidth-1) 
       scrn.blit(holder,(panel_x,panel_y)) 
      """end top case""" 
      """the normal case""" 
      elif(onscreeney<(panel_y+window_size)): #### right here #### 
       scrn.blit(self.bitmap,(panel_x,onscreensy)) 
      """end normal case""" 
      """the bottom case""" 
      else: 
       onscrnwidth = (panel_y+window_size)-self.y 
       onbitmapwidth = self.dim_y-onscrnwidth 
       holder = self.bitmap.subsurface(0,0,self.dim_x,onbitmapwidth-1) 
       scrn.blit(holder,(panel_x,onscreensy)) 
      """end bottom case""" 
     if(self.has_next==True): 
      self.next.mydraw(my_pygame,scrn,panel_x,panel_y,scroll_at,window_size,virtual_size) 

錯誤:

me$ python testscrolling3.py 
    File "testscrolling3.py", line 164 
    elif(onscreeney<(panel_y+window_size)): 
    ^
SyntaxError: invalid syntax 
+0

請發佈整個錯誤消息。 – BrenBarn

+0

顯示完整的錯誤消息,以便我們可以看到它是什麼類型的錯誤。 –

+0

這是'elif'語法錯誤,因爲這些字符串的代碼與'if'的縮進級別相同。 –

回答

5

這些都是不評論。它們是字符串,並且是正常的可執行語句(即使它們實際上沒有做任何事情)。

Python中的評論從#開始。

1

就像@Daniel_Roseman指出的那樣,他們是字符串。它們可以保存在函數中。實際上,他們可以做一些事情(而不是無所事事),請考慮以下示例do_sth3(),其中string後面的函數聲明是docstring

但是,如果我們想讓它們保留在函數中,則縮進必須是正確的。比較:do_sth1()do_sth2()

In [53]: 

def do_sth1(): 
    if 1==1: 
     print 'Ok' 
    '''Comment goes here''' 
    else: 
     print 'Not Ok' 
    File "<ipython-input-53-fada2ba2e658>", line 5 
    else: 
    ^
SyntaxError: invalid syntax 


In [54]: 

def do_sth2(): 
    if 1==1: 
     print 'Ok' 
     '''Comment goes here''' 
    else: 
     print 'Not Ok' 
In [55]: 

def do_sth3(): 
    '''usage: just a test function''' 
    print 'Ok' 
In [56]: 

do_sth3.__doc__ 
Out[56]: 
'usage: just a test function'