我有一系列带有简单值(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)
我应该怎样做才能使循环正常运行?谢谢!
答案 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