繁体   English   中英

如何在Python中将for循环的结果分配给变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM