Python 3.x 随机字符串生成器python
我用Python编写了一个简单的程序来生成一个随机字符串,其中包含5个数字:Python 3.x 随机字符串生成器python,python-3.x,random,rpython,Python 3.x,Random,Rpython,我用Python编写了一个简单的程序来生成一个随机字符串,其中包含5个数字: import random numcount = 5 fstring = "" for num in range(19): #strings are 19 characters long if random.randint(0, 1) == 1: x = random.randint(1, 26) x += 96 fstring += (chr(x).uppe
import random
numcount = 5
fstring = ""
for num in range(19): #strings are 19 characters long
if random.randint(0, 1) == 1:
x = random.randint(1, 26)
x += 96
fstring += (chr(x).upper())
elif not numcount == 0:
x = random.randint(0, 9)
fstring += str(x)
numcount -= 1
print(fstring)
不太难吧?除了一件不可思议的事情:它返回的字符串是随机长度的。我已多次运行该代码,以下是我的一些结果:
>>> ================================ RESTART ================================
>>>
VQZ99HA5DER0CES4
>>> ================================ RESTART ================================
>>>
05PS0T86LOZS
>>> ================================ RESTART ================================
>>>
E2QX8296XK
>>> ================================ RESTART ================================
>>>
M5X9K457QDNBPX
我不知道发生了什么。。。谁能给我指出正确的方向吗?你掷硬币19次;50%的时候你会选择一个字母,另外50%的时候你会选择一个数字,但最多只能选择5次。如果您更频繁地点击数字选项,则不会添加任何内容 因此,您可以构建一个最多19个字符的字符串,但它可以更短。平均是9.5个字母和5个数字 仅在仍有数字可供选择时选择数字:
import string
import random
numcount = 5
chars = []
for num in range(19): #strings are 19 characters long
if numcount and random.random() < 0.5:
chars.append(str(random.randint(0, 9)))
numcount -= 1
else:
chars.append(random.choice(string.ascii_uppercase))
fchars = ''.join(chars)
导入字符串
随机输入
numcount=5
字符=[]
对于范围(19)中的num:#字符串长度为19个字符
如果numcount和random.random()小于0.5:
附加字符(str(random.randint(0,9)))
numcount-=1
其他:
chars.append(random.choice(string.ascii_大写))
fchars=''.join(字符)
演示:
导入字符串
>>>随机输入
>>>string.ascii_大写
“ABCDEFGHIJKLMNOPQRSTUVWXYZ”
>>>numcount=5
>>>字符=[]
>>>对于范围(19)中的num:#字符串长度为19个字符
... 如果numcount和random.random()小于0.5:
... 附加字符(str(random.randint(0,9)))
... numcount-=1
... 其他:
... chars.append(random.choice(string.ascii_大写))
...
>>>''加入(chars)
“3M6G97OEHP6TGRONPV”
>>>莱恩(查尔斯)
19
如果不进行任何深层次分析,您可以看到,有时两个ifs都会失败(导致较短的F字符串),有时,随机地,它们不会。有时,很少,它们不会。平均而言,在数值分支中,您将得到9.5次迭代,而只有5次会做任何事情。你不太可能只得到5次或更少的迭代。这可以生成短至5个字符的字符串,我想他不希望这样只生成5个字符。
>>> import string
>>> import random
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> numcount = 5
>>> chars = []
>>> for num in range(19): #strings are 19 characters long
... if numcount and random.random() < 0.5:
... chars.append(str(random.randint(0, 9)))
... numcount -= 1
... else:
... chars.append(random.choice(string.ascii_uppercase))
...
>>> ''.join(chars)
'3M6G97OEHP6TGYRONPV'
>>> len(chars)
19
import random
numcount = 5
fstring = ""
while numcount > 0:
if random.randint(0, 1) == 1:
x = random.randint(1, 26)
x += 96
fstring += (chr(x).upper())
elif not numcount == 0:
x = random.randint(0, 9)
fstring += str(x)
numcount -= 1
print(fstring)