2017-08-13 114 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