首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python BruteForce HelloWorld

Python BruteForce HelloWorld
EN

Stack Overflow用户
提问于 2018-05-28 12:51:02
回答 1查看 383关注 0票数 0

我正试图强力地打印Hello World,我看过这段代码并尝试过,它工作得很好,但当我试图使它动态时,它就不起作用了。

代码语言:javascript
复制
import random
import sys
import time

targetArray = ["H",'e','l',"l","o"," ", "W", "o", "r","l","d" ]
stringArray = ["","","","","","","","","","",""]
i=0
count = 0
while i < len(targetArray):
    if stringArray[i] != targetArray[i]:
        stringArray[i] = chr(random.randint(0,256))

    if stringArray[i] == targetArray[i]:
        i += 1


    x = 0
    print("\n")
    while x< len(stringArray):
        print(stringArray[x]  , end = "" , flush = True)
        x += 1
        count += 1
    time.sleep(.01)

print("\nTotal Gusses is :",count)

但是当我尝试使用String时,它会无限地打印char。

代码语言:javascript
复制
import random
import sys
import time

targetString = "a"
string = []
i=0
x = 0
count = 0
print(len(targetString))
while string != targetString:
    for i in range(len(targetString)):
        string.append(chr(random.randint(32,126)))


    print("\n")
    while x< len(string):
        print(string[x]  , end = "")
        x += 1
        count += 1
    time.sleep(.01)

print("\nTotal Gusses is :",count)

我怎样才能使它动态化呢?

credits - https://imgur.com/fNjhjUS

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-28 13:32:51

第一个问题是您只在循环之前初始化stringx。因此,它不断地向string添加字符,并打印这些新字符,但是string变得越来越长,并且永远不会与targetString匹配。

第二个问题是targetString的类型是str,而string的类型是list,所以它们当然永远不会相等。

第三个问题是,我们不应该使用string作为标识符,因为有一个名为string的标准库模块,这会隐藏该名称。

不确定这是否是故意的,但在第一个程序中,您一次选择并匹配一个字符(线性时间),而在第二个程序中,您一次选择并匹配所有字符(指数时间)。实际上,比指数还要糟糕:如果targetString是length N,并且您从M字符(在给定代码中为M = 95)中进行选择,则复杂度为O(N * M ** N)

代码语言:javascript
复制
import random
#import sys    # not used
import time

targetString = list("a")
s = []
i = 0
x = 0
count = 0
print(len(targetString))
while s != targetString:
    s = []
    for i in range(len(targetString)):
        s.append(chr(random.randint(32,126)))
    print("")
    x = 0
    while x < len(s):
        print(s[x], end="")
        x += 1
        count += 1
    time.sleep(.01)

print("\nTotal Guesses is :",count)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50559303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档