我想证明兄弟错误,即计算机使用蛮力猜测特定字符串需要多长时间,即使输入的字符数正确。我可以让代码运行,但我不知道如何让它在每次运行时打印一个新字符串。我确定我正在寻找简单的东西。下面是我尝试过的几个代码示例。
import string
import random
random=''.join([random.choice(string.ascii_letters+string.digits) for n in xrange(5)])
while True:
if random != "Steve":
print(random)
if random == "Steve":
print("Found")
这将不断地一遍又一遍地打印相同的字符串。我也尝试过在没有 while 语句的情况下仅使用 if 并且它似乎不起作用。
我知道一旦 random 选择了这 5 个随机字符,它就不会改变,直到有什么东西改变了它,但就像我说的那样,我不确定该怎么做。我试过将 random 移动到不同的地方,但没有用,我只是收到不同的错误消息。
谁能帮帮我。
请您参考如下方法:
random=''.join([random.choice(string.ascii_letters+string.digits) for n in xrange(5)])
这不会每次都创建一个新的随机字符串。此时 random 只是一个随机生成的字符串,它在 while 循环运行时不会改变。引用 random 不会创建新字符串,而只是获取您生成的第一个字符串,因为 random 只是您内存中的一个字符串,而不是一个函数。
将随机字符串创建移动到一个函数中:
import string
from random import choice
def make_random():
return ''.join([choice(string.ascii_letters+string.digits) for n in xrange(5)])
然后运行循环:
while True:
random = make_random()
if random != "Steve":
print(random)
if random == "Steve":
print("Found")
编辑:
将 import random 切换为 from random import choice 因为 random(变量)正在覆盖 random(库)并在您尝试调用时抛出属性错误 随机选择。
