每次在python中运行for循环时,需要将i设置为零

时间:2014-03-12 17:10:20

标签: python for-loop

在运行到26的第二个for循环中,我希望每次从列表中删除一个项目时将其设置回零,以便我可以从头开始检查所有字母表中是否存在字母表在list1.I尝试在for循环中的if语句中添加i = 0,但它返回到其范围值并且不会重置为零。

import string
def getAvailableLetters(lettersGuessed):
    str1 = string.ascii_lowercase
    list1 = [ ]
    list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    str3 = ""
    str4 = str3.join(lettersGuessed)

    for j in range(len(str4)):
       for i in range(26):
           if list1[i] == str4[i]:
           list1.remove(list1[i])


lettersGuessed = ['e', 'i', 'k', 'p', 'r', 's']
getAvailableLetters(lettersGuessed)

4 个答案:

答案 0 :(得分:3)

尝试这样的事情:

import string

def getAvailableLetters(lettersGuessed):
    return sorted(set(string.ascii_lowercase) - set(lettersGuessed))

lettersGuessed = ['e', 'i', 'k', 'p', 'r', 's']
getAvailableLetters(lettersGuessed)

答案 1 :(得分:0)

Python中的

for loops有一个鲜为人知(有些神秘)else的表达式,可用于确定整个循环是否完成。它对重启循环非常有用。

for j in range(…):
  while True:
    for i in range(26):
      if list1[i] == str4[i]:
        list1.remove(list1[i])
        break # Break out of the `for` loop to continue the `while`.
    else:
      # The `else` will not happen if we `break` in the `for` loop.
      break # Finished the `for` loop; Break out of the `while`.

答案 2 :(得分:0)

您可以尝试使用while loop,例如:

i = 0
for j in range(len(str4)):
       while i < 26:
           if list1[i] == str4[i]:
               list1.remove(list1[i])
               i = 0
               continue
           i += 1

通过这种方式,您实际上可以使用从零开始的循环更改icontinue的值。

答案 3 :(得分:0)

def getAvailableLetters(lettersGuessed):
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    lst= ''
    for e in alphabet:
        if e not in lettersGuessed:
            lst += e 
    return lst 

这是我为任何非字母表的字母做的,我把它添加回字符串