无法创建Python循环

时间:2013-05-22 22:07:56

标签: python loops for-loop

我有一系列带有简单值(a,b,c等)的复选框,在选中时,会“触发”一串文字出现。问题是我将有大量的复选框,并在下面为每个复选框手动重复我的代码将是一个烂摊子。我仍在学习Python,并且正在努力创建一个循环来实现这一目标。

这是我当前(工作但不受欢迎)的代码:

if a:
 a = 'foo'
if b:
 b = 'bar'
...

我在循环中的尝试,它将box视为无效:

boxes = [a, b, c, ...]

texta = 'foo'
textb = 'bar'
...

for box in boxes:
 if box:
  box = ('text=%s', box)

我应该怎样做才能使循环正常运行?谢谢!

4 个答案:

答案 0 :(得分:4)

怎么样:

mydict = {a:'foo', b:'bar', c:'spam', d:'eggs'}

boxes = [a, b, c]

for box in boxes:
   print('text=%s' % mydict[box])

答案 1 :(得分:1)

这不起作用,你只是在循环中分配局部变量,而不是分配给列表中的实际位置。试试这个:

boxes = [a, b, c, ...]                   # boxes and texts have the same length
texts = ['texta', 'textb', 'textc', ...] # and the elements in both lists match

for i in range(len(boxes)):
    if boxes[i]:
        boxes[i] = texts[i]

答案 2 :(得分:1)

您应在此处使用zip()enumerate()

boxes = [a, b, c, ...]
texts = ['texta', 'textb', 'textc', ...]

for i,(x,y) in enumerate(zip(boxes,texts)):
    if x:
        boxes[i] = y

答案 3 :(得分:0)

a,b,c = (1,0,11)
boxes = {a:'foo', b:'bar', c:'baz'}
for b in  ["text=%s" % boxes[b] for b in boxes if b]: 
    print b