将随机生成的字符串分配给变量

Assign Randomly Generated String To Variable

我正在尝试创建一个由 3 个部分组成的密码生成器。我能够生成一个随机字符串(例如 tYVb),但是当我尝试将其存储为变量 'mod' 并尝试打印它时,该值的末尾附加了 'None' (tYVbNone ).我如何只将字符串存储到我的变量中以便我可以进一步操作它?

from random import *

number = 4;

def myFunc(length):
    while length > 0:
        rndNumber = randint(0, 51)

    print('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'[rndNumber], end='')
        length -= 1

mod = str(myFunc(number))
print (mod)

您的函数没有 return 任何东西,除非其中一个变量是全局变量,否则将数字放入其中没有任何用处。我不确定您是否可以在定义某些内容的同一行上打印。 运行 代码似乎 return 什么都没有。尝试添加 return 语句。

我会这样做(根据您目前提供的内容):

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)

所提供的代码中存在一些错误或遗漏。我在下面的代码中提供了一些注释,以突出显示代码的潜在改进或突出显示一些添加内容。

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

我认为编写您正在寻找的代码的最简洁的方法是执行如下操作:

import random
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

def myFunc(length):
    return ''.join([random.choice(letters) for x in range(0,length)])

然后你可以像这样调用函数:

x = myFunc(10)
print(x)

生成如下所示的输出:zWAGjUyhEZ