Python中的随机六字母字符串

2024-10-01 00:19:34 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,让我重新表述一下我的整个问题。我想写一个Python脚本,让我不用键盘就可以在microsoftword中输入随机字母。例如,我可以生成一个随机的字母串,代码如下:

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

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


Tags: 字符串代码import程序脚本string字母ascii
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(" ")

这不一定是最好的方法,这取决于您正在做什么(出于性能原因),但是您可以使用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'

一些人在评论中指出,这是没有替换的抽样。这意味着不可能有重复的信件。在

如果您想这样做,可以使用@acushner建议的方法:

^{pr2}$

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

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

它从一个包含每个字母六个副本的长字符串中无需替换。:)

相关问题 更多 >