python第30讲 动动手最后一题相关
words = ["Twitter", "TOTO", "FishC", "Python", "ASL"]one = "qwertyuiop"
two = "asdfghjkl"
three = "zxcvbnm"
for each in words:
if one.find(each.lower()) != -1:
for i in range(len(each)):
if one.find(each.lower()) == -1:
words.remove(each)
break
if two.find(each.lower()) != -1:
for i in range(len(each)):
if two.find(each.lower()) == -1:
words.remove(each)
break
if three.find(each.lower()) != -1:
for i in range(len(each)):
if three.find(each.lower()) == -1:
words.remove(each)
break
print(words)
为啥我这个跑出来没办法筛选Python,是循环的问题吗?
你遇到的问题是因为在循环遍历列表的过程中修改了列表,这会导致一些元素被跳过,导致预期的操作没有发生。这是因为 `for` 循环会在列表长度改变时出现问题。要解决这个问题,可以在循环开始前创建列表的副本,或者使用列表推导式来实现。以下是使用列表推导式重写代码的方法:
words = ["some", "list", "of", "words"]
one = "qwertyuiop"
two = "asdfghjkl"
three = "zxcvbnm"
result = []
for each in words:
lower_each = each.lower()
if all(letter in one for letter in lower_each) or \
all(letter in two for letter in lower_each) or \
all(letter in three for letter in lower_each):
result.append(each)
print(result)
在这里,我们使用 `all()` 函数来检查单词的每一个字母是否只出现在同一个键盘行中。这避免了在遍历过程中修改列表的问题。希望这能解决你的问题!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 关于这个代码的题目和要求是什么? jackz007 发表于 2024-12-13 12:32
关于这个代码的题目和要求是什么?
已解决感谢感谢
页:
[1]