2017-08-13 113 views
1

有沒有辦法使用計數器重寫我的代碼? 類似於:i = 0,el = name [i + 1] ??由於代碼看起來太長時間,有很多repeatings在它Python中的計數器

name = wait.until(EC.presence_of_all_elements_located((By.ID, 'com.eas.android:id/text_username'))) 
    try: 
     if name: 
      action.press(el=name[0]).wait(2000).perform() 
      self.delUser() 
      btnBack.click() 
      time.sleep(2) 
      action.press(el=name[1]).wait(2000).perform() 
      self.delUser() 
      btnBack.click() 
      time.sleep(2) 
      action.press(el=name[2]).wait(2000).perform() 
      self.delUser() 
      btnBack.click() 
      time.sleep(2) 
      action.press(el=name[3]).wait(2000).perform() 
      self.delUser() 
      btnBack.click() 
      time.sleep(2) 
      action.press(el=name[4]).wait(2000).perform() 
      self.delUser() 
      btnBack.click() 
      time.sleep(2) 
      action.press(el=name[5]).wait(2000).perform() 
      self.delUser() 
      btnBack.click() 
      time.sleep(2) 

回答

1
try: 
     if name: 
      for i in range(6): 
       action.press(el=name[i]).wait(2000).perform() 
       self.delUser() 
       btnBack.click() 
       time.sleep(2) 

    or 

     if name: 
      for i in range(len(name)): 
       action.press(el=name[i]).wait(2000).perform() 
       self.delUser() 
       btnBack.click() 
       time.sleep(2) 
+2

'range [0,5]'是無效的語法,我認爲y ou表示'range(5)',但是包含最後一個值,您應該使用'range(6)' – CoryKramer

+2

或者可能的話,保留它'range(len(name))'。 – jw1294

4

的代碼可以簡化使用for loop

try: 
     if name: 
      for n in name: 
       action.press(el=n).wait(2000).perform() 
       self.delUser() 
       btnBack.click() 
       time.sleep(2) 

雖然,我會小心,因爲name似乎是一個list ,但你在第2行的if語句中使用它就像是bool。(更正:這很好,請參閱randomir的評論)

+1

試試'bool([])'和'bool([1,2])'。 Python中的非空列表是真實的。 – randomir