鱼C论坛

 找回密码
 立即注册
查看: 93|回复: 3

[已解决]python第30讲 动动手最后一题相关

[复制链接]
发表于 2024-12-13 11:57:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
words = ["Twitter", "TOTO", "FishC", "Python", "ASL"]
one = "qwertyuiop"
two = "asdfghjkl"
three = "zxcvbnm"
for each in words:
    if one.find(each[0].lower()) != -1:
        for i in range(len(each)):
            if one.find(each[i].lower()) == -1:
                words.remove(each)
                break
    if two.find(each[0].lower()) != -1:
        for i in range(len(each)):
            if two.find(each[i].lower()) == -1:
                words.remove(each)
                break
    if three.find(each[0].lower()) != -1:
        for i in range(len(each)):
            if three.find(each[i].lower()) == -1:
                words.remove(each)
                break
print(words)

为啥我这个跑出来没办法筛选Python,是循环的问题吗?
最佳答案
2024-12-13 11:58:01
你遇到的问题是因为在循环遍历列表的过程中修改了列表,这会导致一些元素被跳过,导致预期的操作没有发生。这是因为 `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 小助理,如未能正确解答您的问题,请继续追问。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-13 11:58:01 | 显示全部楼层    本楼为最佳答案   
你遇到的问题是因为在循环遍历列表的过程中修改了列表,这会导致一些元素被跳过,导致预期的操作没有发生。这是因为 `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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-13 12:32:57 | 显示全部楼层
        关于这个代码的题目和要求是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-13 13:30:05 | 显示全部楼层
jackz007 发表于 2024-12-13 12:32
关于这个代码的题目和要求是什么?

已解决感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-21 21:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表