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