根据用户输入设置变量值的最短方法是什么

时间:2019-07-06 20:04:42

标签: python

例如,我有大量的布尔值

bool1 = False
bool2 = False
...
booln = False

用户运行程序,并提供要设置为True的布尔名称。例如python run.py bool100。 是否可以在不使用n-depth if elif语句的情况下,在一行或几行中实现它?

谢谢

编辑:澄清-这些是普通的布尔变量,我无法将它们转换为字典或列表

1 个答案:

答案 0 :(得分:0)

使用exec从字符串中运行python命令

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。正如其他人提到的那样,应该首选字典。