如何检查输入的3个字母是否与qwer键盘的连续顺序相同?

时间:2017-09-24 08:41:36

标签: python python-3.x

让我们说用户输入'hkuzasd7854hjd;键盘上的''asd'是彼此相邻的字母。有没有一种简单的方法可以创建一个循环,通过键盘上的3行键并检查用户输入的值是否包含3个连续字母?是否可以使代码返回整数值而不是对或错?。谢谢。

2 个答案:

答案 0 :(得分:2)

实际上连续三个字母的序列很少,你可以列出它们:

BAD3 = { 
    "qwe", "wer", "ert", "rty", "tyu", "yui", "uio", "iop",
    "asd", "sdf", "dfg", "fgh", "ghj", "hjk", "jkl",
    "zxc", "xcv", "cvb", "vbn" }

def qwertz(string):
    return any(bad in string for bad in BAD3)

非常原始,我知道。如果您愿意,可以制作一个准备BAD集的功能。

计算所有事件的更新函数(但例如“qwer”计算两次,“qwe”,“wer”):

def qwertz(string):
    return sum(1 for bad in BAD3 if bad in string )

答案 1 :(得分:0)

这段代码在列表中添加并找到模式。列表“找到”包含4个子列表,每个子列表代表键盘上的一行。因此,“qwe”将位于索引为1的第二个子列表中。

rows = ["1234567890-=",
        "qwertyuiop",
        "asdfghjkl;'",
        "\zxcvbnm,."]


string = "qwertyytruasddffdsgs4rewewerw";

found = [[],[],[],[]]


for row_idx,x in enumerate(rows):
    for y in range(0, len(string)-3):
        #Forward match
        if string[y:y+3] in x:
            found[row_idx].append(string[y:y+3])
        #Backwards match
        if (string[y:y+3])[::-1] in x:
            found[row_idx].append(string[y:y+3])

print found

对于其他键盘布局,您需要为每个键盘布局提供一个单独的行列表。

希望这有点帮助。