【问题标题】:Random six letter string in PythonPython中的随机六个字母字符串
【发布时间】:2014-03-19 19:58:12
【问题描述】:

好的,让我重新表述我的整个问题。我希望能够编写一个 Python 脚本,让我可以在没有键盘的情况下在 Microsoft Word 中输入随机字母。例如,我可以生成一个随机的字母串,其代码如下:

import string, random
a = string.ascii_uppercase
b = random.choice(a)
c = random.choice(a)
d = random.choice(a)
print a + b + c

假设代码打印出“HVF”。我想用相同的脚本将此字符串输入 Microsoft Word,这很容易使用 ctypes。但是,该程序只能键入字符串“HVF”。我想要一个程序,它会生成任何随机的字母字符串,然后将该字符串输入 Microsoft Word。

【问题讨论】:

  • 按键功能仅在您尝试将按键按下的程序具有焦点或按键算法具有要定位的窗口句柄时才起作用。

标签: python random types


【解决方案1】:

这不一定是最好的方法,具体取决于您正在做什么(出于性能原因),但您可以使用 random.sample 而不是一次使用 random.choice 并加入结果。

>>> import random, string
>>> ''.join(random.sample(string.ascii_uppercase, 6))
'SWUHCK'
>>> ''.join(random.sample(string.ascii_uppercase, 6))
'WUYOMS'
>>> ''.join(random.sample(string.ascii_uppercase, 6))
'PMAHEL'

一些人在 cmets 中指出这是无替换抽样。这意味着不可能出现重复的字母。

如果你愿意,你可以使用@acushner 建议的东西:

>>> ''.join(string.ascii_uppercase[random.randint(0, 25)] for i in xrange(6))

或者@adsmith 建议的可能更快的解决方案:

>>> ''.join(random.sample(string.ascii_uppercase * 6, 6))

从包含每个字母的六个重复项的长字符串中无需替换的样本。 :)

【讨论】:

  • 我想你不明白。我希望 Python 将其键入到 Microsoft Word 中,例如
  • 你说得对,我不知道。您的问题的标题是“Python 中的随机六字母字符串”,您说问题需要“将其输入 Microsoft Word”,但其他一些线程“允许您进行输入部分”。如果您在这部分遇到问题,请发布关于仅此的问题。你试过什么?什么不工作?
  • random.sample 不会给出重复字母的单词。
  • 我将问题中的代码添加到链接中程序的末尾。那是我尝试过的。我想在 Microsoft Word 中 type 输入一个 random 六个字母的字符串。这么难理解吗?
  • @eddybob123 你在键盘上键入。您想向任意进程发送人工击键,而不指定您正在使用的库、操作系统或 Python 版本,这与您提出的问题无关。对那些自愿帮助你编写代码的人嗤之以鼻,你不会得到太多帮助。
【解决方案2】:

从您编辑的问题看来,您在循环程序时遇到了问题。这绝对是初学者的材料,因此通过深入ctypes 来产生击键,您显然会提前数光年。啊,好吧,我们还是去吧……

import random, string

NUM_CHARS = 6 # how long the string should be
textbank = string.ascii_uppercase * NUM_CHARS

while True:
    word = random.sample(textbank,NUM_CHARS)
    for letter in word:
        press_key_however_you_do_it(letter)
        # I have no idea how you're implementing this, but you do
    press_key_however_you_do_it(" ")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多