例如,我有大量的布尔值
bool1 = False
bool2 = False
...
booln = False
用户运行程序,并提供要设置为True
的布尔名称。例如python run.py bool100
。
是否可以在不使用n-depth if elif
语句的情况下,在一行或几行中实现它?
谢谢
编辑:澄清-这些是普通的布尔变量,我无法将它们转换为字典或列表
答案 0 :(得分:0)
exec
是一个函数,可让您将python命令作为字符串传递。例如。
exec('a = 1')
exec('print(a)') # prints 1
因此,完整的解决方案是
# Create all the bools
for i in range(1, n+1):
exec('bool{0} = False'.format(i))
# Take user input and set the bool
idx = input("Enter the bool id") # raw_input for python2
exec('bool{0} = True'.format(idx))
这在真实应用中具有安全风险。极度气disc。正如其他人提到的那样,应该首选字典。