简化所有变量并在 Python 中将它们设置为 false

Simplify all variable and set them to false in Python

我不是Python高手,但是谁能简化这段代码,因为我认为一定有另一种写法。

button1_clicked = False
button2_clicked = False
button3_clicked = False
button4_clicked = False
button5_clicked = False
button6_clicked = False
button7_clicked = False
button8_clicked = False
button9_clicked = False

任何人回答我都会很有帮助:) 谢谢。

for i in range(1,10) :
  vars()['button{}_clicked'.format(i)] = False

您可以使用 for in range

你可以用这样的字典来存储变量。

d = {}
for i in range(1,10):
    d[f'button{i}_clicked'] = False

print(d)
{'button1_clicked': False, 'button2_clicked': False, 'button3_clicked': False, 'button4_clicked': False, 'button5_clicked': False, 'button6_clicked': False, 'button7_clicked': False, 'button8_clicked': False, 'button9_clicked': False}

要访问变量,您可以这样做

d['button2_clicked'] - 给你 False.

你可以这样写:

button1_clicked = button2_clicked = button3_clicked = button4_clicked = button5_clicked = button6_clicked = button7_clicked = button8_clicked = button9_clicked = False

但也许最好将它们放在列表或类似的东西上,但这取决于你想要什么

一种快速而肮脏的方式:

[exec(f'buttin{i}_clicked = False') for i in range(1, 9+1)]
[exec(f'buttin{i}_clicked = True') for i in range(1, 9+1)]

由于我只看到可以说是丑陋的(自我承认的)非 pythonic 答案,我觉得有必要提供另一种方式:

button_clicked = {i: False for i in range(1,10)}

然后您可以使用例如button_clicked[5] 而不是 button5_clicked.

这样做的好处是您现在可以轻松地遍历所有按钮,而不必单独处理每个按钮...