[英]How to assign the result of a for loop to a variable in Python
我的程序生成一个随机字符串,其随机字母数量为10到20。
def program():
import random
import sys
x=['q','w','e','r']
y=random.randint(10,20)
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
sys.stdout.write(e)
该程序将打印一个随机字符串,如“ wwwweewwqqrrrrwwqqeeqqww”。 我将如何将该字符串存储为变量?
将其存储在变量中,而不是编写:
e=''
for t in range (0,y):
w=random.randint(0,3)
e += x[w]
e
是一个空变量,每次您将值x[w]
到它时。
我还建议您在sys.stdout.write(e)
使用print()
,因为您不需要其他导入-例如sys
,是内置的print()
。
在这种情况下,我可以建议对x=['q','w','e','r']
使用元组,因为它们更快。 因此: x=('q','w','e','r'1)
但是如果您以后需要修改此选项,则此选项不可用(因为它们是不可变的)。
您可以使用列表推导替换循环,并使用join()
:
e = ''.join([random.choice(x) for _ in range(0, y)])
输出:
qwewwwereeeqeqww
def program():
import random
x=['q','w','e','r']
y=random.randint(10,20)
mystr=''
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
mystr=mystr+e
如果您愿意,可以让program()
返回输出变量,如下所示:
def program():
import random
import sys
x=['q','w','e','r']
y=random.randint(10,20)
output = ''
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
output+=e
# The print is stored in 'output'
# Return the output
return output
result = program()
一种简单的方法是创建一个新的字符串变量,然后使用+=
运算符将每个字符连接到一个新的字符串上。 您的代码可能是
def program():
import random
import sys
x=['q','w','e','r']
y=random.randint(10,20)
z = '';
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
z += e;
此代码仅将每个字符添加到for循环中的字符串变量z
中,并且该字符串值应存储在z
。
像(没有测试过程序,应该可以工作……著名的遗言)。
# imports at start of file, not in def
import random
import sys
# I would never call a def 'program', kind of generic name, avoid
def my_program(): # camel case, PEP-8
x=['q','w','e','r']
z='' # initialize result as an empty string
for _ in range (0, random.randint(10,20)):
z+=x[random.randint(0,3)] # add a letter to string z
return z
“ _”通常用于丢弃变量,请参见Python中单个下划线“ _”变量的目的是什么? 在这种情况下,无处使用_。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.