characters ='abcdefghijklmnopqrstuvwxyz '
def monkey():
return ''.join(random.choice(characters) for i in range(5))
def checkif():
checkstring = "seven"
randString = monkey()
count = 1
while(randString != checkstring):
if(randString) == (checkstring):
print(count)
return True
else:
randString = monkey()
count = count + 1
我想生成一个随机字符串并检查该字符串是否等于静态字符串,然后我希望程序继续运行,直到随机生成的字符串等于静态字符串(在本例中为“七”)。随机字符串生成工作得很好,但我的循环似乎无限运行,而不是在达到条件后停止。有人能帮我正确地停止无限循环吗?在
有
monkey
的可能排列。我想你只是等的时间不够长。在但是,您有一个bug,它将导致
^{pr2}$count
永远无法打印:在检查
while
块之前,while
条件将脱离循环。将其更改为while True:
,并允许中断条件中断。在此外,优化:
''.join
对列表的理解比join
生成表达式的速度快。在因此,重新检查所有代码(附带一些小的语法升级和计时器):
输出:
显然,你的里程数可能会因找到猴子而有所不同:-)
您的
monkey()
方法可以创建27^5==14348907(1400万)个不同的字符串。在随机创建特定的字符串seven
之前(统计上)需要相当长的时间。再等等。在27*27*27*27*27 = 14348907
可能性。要获得与所需字符串相等的字符串需要很长时间。在您可以尝试使用长度较小的测试:
并更改
^{pr2}$monkey()
长度结果(仅用于测试)。通过这个较小的示例,您可以看到程序按预期工作:相关问题 更多 >
编程相关推荐