我正在尝试创建一个由3个部分组成的密码生成器。我能够生成一个随机字符串(例如tYVb)但是当我尝试将其存储为变量'mod'并尝试打印它时,该值的末尾附加了'None'(tYVbNone)。我如何只将字符串存储到我的变量中,以便我可以进一步操作它?
$ docker service ps --no-trunc webstack_p71 # check ERROR column
答案 0 :(得分:1)
我就是这样做的(基于你到目前为止提供的内容):
from random import *
number = 4;
def myFunc(length):
value = ''
while length > 0:
rndNumber = randint(0, 51)
value += 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[rndNumber]
length -= 1
return value
mod = myFunc(number)
print (mod)
答案 1 :(得分:1)
如下所示,代码中存在一些错误或遗漏。我在下面的代码中提供了一些注释,以突出显示代码的潜在改进或突出显示一些新增内容。
from random import *
# you don't need a semi-colon after the 4
number = 4
def myFunc(length):
# Since we are building a password, we want to start with an empty
# password before the while loop.
password = ''
while length > 0:
rndNumber = randint(0, 51)
# This step builds a new password incrementally. As you go
# through the while loop, it adds a new character to the
# end of the password variable.
password += 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[rndNumber]
length -= 1
return password
# you don't need to convert the output to a string using the code above
# since the process builds a string.
mod = myFunc(number)
print(mod)
正如Charles Duffy所提到的,random.choice()是一个更好的解决方案,使代码更加Pythonic:
random.choice()
此函数从一系列项目中随机选取(在引擎盖下,字符串被视为序列)。
可以在上面的代码中插入此代码段以帮助清理它。
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
letter = random.choice(letters)
password += letter
答案 2 :(得分:0)
你的函数没有返回任何东西,并且在其中放入一个数字是没有用的,除非其中一个变量是全局的。我不确定你是否可以在定义内容的同一行上打印。运行代码似乎没有返回任何东西。尝试添加一个return语句。
答案 3 :(得分:0)
我认为编写您正在寻找的代码的最简洁方法是执行以下操作:
import random
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
def myFunc(length):
return ''.join([random.choice(letters) for x in range(0,length)])
然后你可以像这样调用函数:
x = myFunc(10)
print(x)
生成类似于zWAGjUyhEZ