Python 如何使此代码与其他程序交互?

Python 如何使此代码与其他程序交互?,python,passwords,Python,Passwords,所以我做了一个密码,是一个蛮力密码猜测器,用来猜测一个3个字母的密码 我知道这段代码是不正确的,因为while语句显然是错误的,那么我该如何修复它呢 另外,我如何使此代码与其他程序交互 例如: Winrar有一些文件需要3个字的密码,并且有一个输入密码的输入屏幕。我如何使我的代码在密码输入框中交互或“键入” import random import string while password != correct: letter 1 = random.choice(string.le

所以我做了一个密码,是一个蛮力密码猜测器,用来猜测一个3个字母的密码

我知道这段代码是不正确的,因为
while
语句显然是错误的,那么我该如何修复它呢

另外,我如何使此代码与其他程序交互

例如:

Winrar有一些文件需要3个字的密码,并且有一个输入密码的输入屏幕。我如何使我的代码在密码输入框中交互或“键入”

import random
import string

while password != correct: 
    letter 1 = random.choice(string.letters)
    letter 2 = random.choice(string.letters)
    letter 3 = random.choice(string.letters)
    word = '%s%s%s'%(letter1, letter2, letter3) 
    if word == password:
        print "The code is %s"%(word) 
    else:
        break; 

这是一种可怕的方式,但是

import random
import string

while True:
    # Do it until the `if` block says it's right, then break.
    word = ''.join([random.choice(string.letters) for _ in range(3)])
    if word == password:
        print "The code is %s" % (word)
        break
编辑:
'.join([random.choice(string.letters)for uuu in range(3)])
根据您在评论中的要求进行解释

[x代表x在x的列表中]
是一种列表理解。您可以对结果项进行变换(例如,从根1-10开始的所有完美平方都是
[x**2表示范围(1,11)内的x)]
或者更简单的
[x**2表示范围[1,2,3,4,5,6,7,8,9,10]]
。关于这方面有很多信息,还有大量的规范答案

random.choice(string.letters)
你已经在使用了,所以你得到了很多。
'.join
使用
str.join
命令,它将一个字符串组合成一个字符串,使用
str
作为分隔符。
,“.join([“鸡蛋”、“奶酪”、“面包”、“牛奶”)
产生
“鸡蛋、奶酪、面包、牛奶”
。在这种情况下,我使用一个空字符串进行组合

基本上,我正在构建一个包含三个随机选择(string.letters)的列表。(这个
没有什么特别的,它只是给下一个程序员的符号,表示这个变量是不必要的。
[do\u something for u in range(x)]
do\u something
s
x
long列表的常见用法),然后将它们组合在一起,中间有一个空字符串(换句话说,它们之间没有任何内容)

也许吧

但老实说,你想做的是:

import itertools as it
for attempt in (''.join(combo) for combo in it.combinations(string.letters,3)):
    if attempt == password:
        print "success:",attempt
else:
    print "failure"
为了预先回答您的问题,
itertools
(我作为
it
导入)有一个方法
combines
,该方法返回您递给它的序列长度
r
的iterable的所有唯一组合。符号是
itertools.combines(iterable,r)
。它返回一个元组列表,然后需要以与上面相同的方式组合元组

此方法唯一的缺点是无法捕获像
“aaa”
这样的密码。任何重复的字符都不会出现在
组合中


至于您的标题:“如何使此代码与其他程序交互”对于这个问题来说太宽泛了。不幸的是,这不太合适。

你说:“我很明显知道这段代码不正确,也不会正常工作,因为while语句显然是错误的”。请在任何人回答你的问题之前指出到底错在哪里对不起@GodMan我指的是“while password!=correct”不是一个正确的语句,因为“correct”不是python的语法。这么说,我只是想知道如何将它重写到它可以工作的地方。想知道一旦它是正确的密码,它将打印到哪里吗?谢谢,但出于紧急情况,你能向我解释一下这段代码是如何“通读”的吗“?比如“单词=”.join([random.choice(string.letters)代表uu3)]”这件事做了什么?为什么代码是一种糟糕的方式?嗯,好吧,“itertools”对我来说是一件新鲜事,但我想我已经了解了事情的要点。但是告诉我我是否理解正确。“单词=”.join([random.choice(string.letters))代表3)](3) ])”基本上是说;取3个随机字母,将它们相邻,并将这3个随机相邻的字母标记为一个称为“Word”的变量?我说的对吗?如果你使用带替换的
组合,而不是
组合,你会得到
aaa
import itertools as it
for attempt in (''.join(combo) for combo in it.combinations(string.letters,3)):
    if attempt == password:
        print "success:",attempt
else:
    print "failure"