我一直在创建一个搜索两个列表的功能,并检查一个字符是否在两个列表中。错误
“IndexError:列表索引超出范围”
不断上升。我把它放在python Tutor中,似乎while循环完全被忽略了。我正在编码这个搜索而不使用if语句中的in函数。任何帮助将不胜感激!
这是我的代码:
aList = ["B" , "S" , "N" , "O" , "E" , "U" , "T" ]
userInput = "TOE"
userInputList = list(userInput)
letterExists = 0
while (letterExists < len(userInput)):
for i in aList:
if (i == userInputList[letterExists]):
letterExists +=1
if (letterExists == len(userInput)):
print("This word can be made using your tiles")
答案 0 :(得分:1)
letterExists < len(userInput)
仅保证还有1个字母可以处理,但您可以通过for
循环迭代1次以上。
顺便说一句,你可以使用set
非常好地写出这个条件:
the_set = set(["B", "S", ...])
if(all(x in the_set for x in userInput)):
...
答案 1 :(得分:0)
你可以使用python magic并像这样写:
len([chr for chr in userInput if chr in aList]) == len(userInput)
答案 2 :(得分:0)
查看您的代码并且没有尝试做得更好,我发现在break
增加后缺少letterExists
。这是固定代码:
aList = ["B" , "S" , "N" , "O" , "E" , "U" , "T" ]
userInput = "TOE"
userInputList = list(userInput)
letterExists = 0
while (letterExists < len(userInput)):
for i in aList:
if (i == userInputList[letterExists]):
letterExists +=1
break
if (letterExists == len(userInput)):
print("This word can be made using your tiles")
但是,更好的pythonic解决方案如下(与 xtofl 的答案相同):
aList = ["B" , "S" , "N" , "O" , "E" , "U" , "T" ]
userInput = "TOF"
a = all([letter in aList for letter in userInput])
if (a):
print("This word can be made using your tiles")