有没有办法在for循环中更改函数中使用的变量?

时间:2019-05-01 20:32:21

标签: python

我正在学校上计算机科学课程,我需要弄清楚一些考试代码,在解码RLE后在for循环中打印变量名后,我需要更改变量名。我很难解释,但我希望你能理解。

我试图在线查找它,但是找不到解决我遇到的问题的正确方法。

import re

def decode(string):
    return re.sub(r'(\d+)(\D)', lambda m: int(m.group(1)) * m.group(2), string)

ch=int(input())

for x in range(0, ch):
    globals()['line%s' % x]=input()

for x in range(0, ch):
    print(decode(['line%s' % x]))

我要寻找的结果是逐行输入RLE之后的结果(ch是行数),我制作的函数采用了for循环创建的变量名(所以它们的名称为{ {1}},line0line1等...,直到line2),然后继续解压缩并打印RLE,但我似乎无法使其正常工作

编辑:我可能已经使我的问题不那么明显了,我深表歉意,我想修复最后两行代码,以便将RLE解压缩并打印在一个for循环中,我不知道这是否可行,但是我只是想知道如何(如果可以)使line(ch)起作用,所以就像变量print(decode(['line%s' % x]))后面跟着数字一样,在变量中也会发生变化。抱歉,我很难解释。

1 个答案:

答案 0 :(得分:5)

动态创建变量名几乎总是错误的做法。您只需要一个简单的列表值:

lines = []
for x in range(ch):
    lines.append(input())

# or as a list comprehension,
# lines = [input() for x in range(ch)]

for x in lines:
    print(decode(x))