如果我的问题措辞奇怪,我很抱歉,我是新手,这是Stack Overflow中的第一次.长话短说,我有一个函数可以创建一个列表(称为word_list),其中包含用户创建的单词(例如.‘树’、‘狗’、‘阿拉斯加’等).函数find_row应该只使用键盘上的一行键来查找word_list中可以创建的单词.我的问题是,无论输入什么单词(不包括qutyuiop、ASDFGHJKL和zxcvbnm),for循环都将始终输出"Word Can‘t Make With One Line"

以下是我的代码:

def find_row(word_list):
first_row = 'qwertyuiop'
second_row = 'asdfghjkl'
third_row = 'zxcvbnm'
new_list = []
for word in word_list:
    if word in first_row:
        new_list.append(word)
    elif word in second_row:
        new_list.append(word)
    elif word in third_row:
        new_list.append(word)
    else:
        print("Word can't be made with one row")
return new_list

我已经try 将变量First_row、Second_row和Third_row列在列表中,以查看这是否有帮助,然而这似乎并没有改变任何事情.我还try 让if语句显示"if word in first_row,word not in Second_row and word not in Third_row",但这没有帮助.(对于另外两个ELIF语句,我也是这样做的)只有当我输入QWERTYIOP、ASDFGHJKL或zxcvbnm时,程序才能正常运行

推荐答案

如果我没记错的话,你是在找套装手术.在您的示例中,您可以使用set.issuperset来判断单词是否可以由行字符构成:

def find_row(word_list):
    first_row = set('qwertyuiop')   # <--- convert your rows to sets
    second_row = set('asdfghjkl')
    third_row = set('zxcvbnm')

    new_list = []
    for word in word_list:
        if first_row.issuperset(word):
            new_list.append(word)
        elif second_row.issuperset(word):
            new_list.append(word)
        elif third_row.issuperset(word):
            new_list.append(word)
        else:
            print(f"Word {word} can't be made with one row")

    return new_list

print(find_row(['tree', 'lag', 'cx', 'qaz']))

打印:

Word qaz can't be made with one row
['tree', 'lag', 'cx']

Python-3.x相关问答推荐

使用Python装载. iso文件

模型中的__str__方法在Django管理面板中生成大量重复查询

为什么我在BLE中的广告代码在发送包裹之间需要大约1秒

Heroku 中的未知错误代码缺少一个或多个参数

Python 舍入数字不准确

隐藏Cartopy中高纬度非矩形投影的右侧轴(纬度)标签

将 rgb numpy 图像转换为 rgb 列表和相应的索引值

Pandas 在每组两个条件之间获得时间增量

如何向 scikit-learn 函数添加类型提示?

使用条件参数为 super() 调用 __init__

如何在 on_ready 事件中使用 change_presence? (discord.py)

为直方图中的每个 bin 绘制不同的 colored颜色 (Matplotlib)

在python中循环处理时并行写入文件

Python3 AttributeError:列表对象没有属性清除

Django 2 个字段之一不能为空

django rest框架中的save()、create()和update()有什么区别?

使用打印时,用+连接是否比用,分隔更有效?

Python 3 与 Python 2 映射行为

如何使用 asyncio 添加连接超时?

有没有办法在多个线程中使用 asyncio.Queue ?