Python 根据特定循环条件生成随机字符

Python 根据特定循环条件生成随机字符,python,string,function,while-loop,Python,String,Function,While Loop,只要不满足循环条件,我想继续随机生成单个字符。我希望下面的代码能正常工作,但它不能: import string import random def random_characters(number): i = 0 new_string = '' while (i < number) : new_string = random.choice(string.ascii_lowercase) i = i + 1 ret

只要不满足循环条件,我想继续随机生成单个字符。我希望下面的代码能正常工作,但它不能:

import string
import random

def random_characters(number):
    i = 0
    new_string = ''

    while (i < number) :
        new_string = random.choice(string.ascii_lowercase)
        i = i + 1
        return new_string


random_characters(3)
导入字符串
随机输入
def随机字符(数字):
i=0
新字符串=“”
而(i
当我运行这段代码时,不会发生任何事情,也不会得到任何错误的反馈。我可能以错误的方式使用了
返回新的\u字符串
,但我无法找到它,即使这是我缺少的。

两个原因:

  • 放弃创建的字符(通过重新指定给相同的名称)
  • 无论如何只返回第一个字符(通过在循环内返回)
请考虑做:

import string
import random

def random_characters(number):
    i = 0
    random_chars = []

    while (i < number) :
        random_chars.append(random.choice(string.ascii_lowercase))  # Store the char you generate
        i = i + 1

    return ''.join(random_chars)  # Return once you have all the characters

注意:这称为a

首先,您的
返回值在循环内,因此您不会多次循环。换成

def random_characters(number):
    i = 0
    new_string = ''

    while (i < number) :
        new_string = random.choice(string.ascii_lowercase)
        i = i + 1
    return new_string # <<< Dedent

random_characters(3)
#>>> 'c'
然后,您应该对范围(数字)中的i使用
,而不是
while
循环:

def random_characters(number):
    letters = []

    for i in range(number): # <<< Deals with i for you.
        letters.append(random.choice(string.ascii_lowercase))

    return "".join(letters)

random_characters(3)
#>>> 'xay'
或者您可以告诉它打印文件中的结果:

print(random_characters(3))  # Python 3
print random_characters(3)   # Python 2

这可能会有帮助:顺便说一句,您的
return
语句没有正确缩进。请注意:有一个约定(或者,这很常见)如果您不打算使用循环变量,请使用
作为循环变量。这仍然没有回答:当我运行此代码时,什么都没有happens@hcwhsa如果希望显示一些输出,可能需要在
随机字符(3)
前面添加
print
语句:
print random\u字符(3)
。现在,您正在生成随机字符串并将其丢弃。这就是OP要求的,您在回答中没有提到任何与此相关的内容。即使他们使用您的代码,也不会得到任何输出。@hcwhsa确定,然后呢?我很抱歉打断你,但OP的代码无论如何都不会起作用。“现在你只要求一个修复,却得到了两个修复。”托马索罗兹科说得很对。return语句在循环中,我必须将它带到外部。同样正确的是,我正在生成随机数并将其丢弃,因此我需要一个“打印”语句来确保确实发生了一些事情。谢谢
def random_characters(number):
    letters = []

    for i in range(number): # <<< Deals with i for you.
        letters.append(random.choice(string.ascii_lowercase))

    return "".join(letters)

random_characters(3)
#>>> 'xay'
def random_characters(number):
    # MAGIC!
    letters = [random.choice(string.ascii_lowercase) for i in range(number)]

    return "".join(letters) # <<< Join the letters into one string

random_characters(3)
#>>> 'yby'
%~> python -i random_characters.py
>>> random_characters(3)
'zgp'
print(random_characters(3))  # Python 3
print random_characters(3)   # Python 2