【问题标题】:Simplify all variable and set them to false in Python简化所有变量并在 Python 中将它们设置为 false
【发布时间】:2021-08-23 06:28:15
【问题描述】:

我不是 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

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

【问题讨论】:

  • 保留按钮列表/字典?不知道你在做什么很难说。
  • button_clicked = [False]*9 使用例如button_clicked[4] 而不是 button5_clicked(如果您绝对想从 1 而不是 0 为按钮“命名”,请使用 dict)
  • 我认为这里的问题是您存储变量的方式...

标签: python simplify


【解决方案1】:

一种快速而肮脏的方式:

[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)]

【讨论】:

    【解决方案2】:

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

    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

    【讨论】:

    • 如果您需要明确使用 'button2_clicked' 作为键,那么使用 dict 有什么意义?
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 好的,这实际上很有帮助,因为它最容易理解、最简单,同时也很简短。我注意到您有一个错字,例如您输入了 2 次,实际上应该是“False for i in range(1,10)”
    • 但无论如何你解决了我的问题,恭喜,谢谢??
    【解决方案4】:
    for i in range(1,10) :
      vars()['button{}_clicked'.format(i)] = False
    

    您可以使用for in range

    【讨论】:

    • 应该是False
    • 虽然技术上没有错,但这是非常不符合 Python 的......
    • 感谢@GhostOps
    • 你能解释一下原因吗? @朱利安
    • 如果此代码在模块内,您的答案将产生不同的效果。更好的用户vars()[...] = False.
    【解决方案5】:

    你可以写:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-13
      • 2013-03-09
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      相关资源
      最近更新 更多