如何允许用户通过输入引用变量和其他数据结构?

时间:2016-04-08 19:19:57

标签: windows function input exec python-3.5

example.py

dumpVar = ['a','b','c','d','e','f','g']

def examineVar():
  container = input('Which var would you like to examine? ')
  for i in range (len(container)):
    print(container[i])
                                                                                            .

Python 3.5(32位)

>>> exec(open(r'c:\users\me\desktop\code\example.py').read())
>>> examineVar()
Which variable would you like to examine? _
                                                                                            .

这里的运行 - 我有一个名为'示例'的.py文件我从解释器运行以加载我可以使用的代码环境。这个特殊的环境包含一个单独的数组(已经填充),以及一个带有一些基本命令的函数,用于一次返回有关输入一行的信息。

我想要做的是输入我用脚本创建的变量名,并让函数句柄打印内容。

我意识到我可以轻松地>>> dumpVar,看到数组显示在一行中 - 但是我试图弄清楚如何通过...我想元信息......通过用户输入到解释器。如果这是有道理的。

无论如何,我一直试图使用exec(),但是我把它放在函数中的任何地方都会产生异常,并且它唯一没有产生异常的时候,它只打印了一个一次dumpVar的字符,每次都创建一个新行(当然新行是所需的行为)。

那么,如何修改我的函数来生成变量的内容,而不是输入字符串的字符呢?

1 个答案:

答案 0 :(得分:1)

来自OP的评论更新。他的目的是通过输入来引用变量,而他的原始标题并未明确表达。解决方案是实现一个字典,通过字符串键引用对象:

list_a = ['a', 'b', 'c', 'd', 'e', 'f']

my_variables = {'list_a' : list_a}

def examineVar():
    for i in my_variables[input('>>> ')]:
        print(i, end='')

    print('\n')

examineVar()

输出:

python3 variable_referencing.py
>>> list_a
abcdef

使用list()

>>> x = 'hello'
>>> list(x)
['h', 'e', 'l', 'l', 'o']
>>> 

修改功能:

def examineVar():
  container = list(input('Which var would you like to examine? '))
  for i in range (len(container)):
    print(container[i])

此外,没有必要在可迭代(range(len(container))中定义一个范围,这就足够了:

for i in container:
    print(i)

如果您想知道项目的索引以及项目,请使用enumerate()

for i, v in enumerate(container):
    print("Index:{} - Value:{}".format(i, v)