在运行到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)
答案 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)
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
通过这种方式,您实际上可以使用从零开始的循环更改i
和continue
的值。
答案 3 :(得分:0)
def getAvailableLetters(lettersGuessed):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
lst= ''
for e in alphabet:
if e not in lettersGuessed:
lst += e
return lst
这是我为任何非字母表的字母做的,我把它添加回字符串