我想知道是否有什么方法可以使这段代码更短:对于字母x

我想知道是否有任何方法可以缩短这行代码(在本文下方)。

我想尝试a,然后b,然后c,d,e,f,g,然后再尝试aa,ab,ac等,等等。

我有python 3.7。

我想在某种蛮力的东西中使用它。

from pynput.keyboard import Key,Controller
import time

letters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
keyboard = Controller()
time.sleep(2)
for i in range(20):
    for x in range(letters):
            keyboard.type(x)
            keyboard.type(y)
            keyboard.press(Key.enter)
            time.sleep(1)
riyeying 回答:我想知道是否有什么方法可以使这段代码更短:对于字母x

这行代码:

for x in range(letters):

不应该工作。这将引发TypeError,因为range需要一个,两个或三个整数,而不是字符串列表。

这是使用生成器的解决方案,您可以对其进行修改以满足自己的需求。生成器使用itertools.product生成包含字符串的元组。字符串数与number_of_digits关键字参数相对应。使用itertools.islice可以获取下一个n元组(本例中的n是5)-由于26 ** 2 == 676(假设number_of_digits是2)。

def main():

    from itertools import islice

    def get_product(*,number_of_digits=2):
        from itertools import product
        from string import ascii_lowercase

        for tpl in product(*[ascii_lowercase] * number_of_digits):
            yield tpl

    product_generator = get_product()

    for tpl in islice(product_generator,5):
        print(tpl)


    return 0


if __name__ == "__main__":
    import sys
    sys.exit(main())

输出:

('a','a')
('a','b')
('a','c')
('a','d')
('a','e')
本文链接:https://www.f2er.com/3157833.html

大家都在问