如何允许用户通过输入引用变量和其他数据结构?
How can I allow users to reference variables and other data structures via input?
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? _
.
下面是 运行 -- 我有一个名为 'example' 的 .py 文件,我正在从解释器 运行 中加载它以加载我可以使用的代码环境。这个特定的环境包含一个数组(已经填充)和一个带有一些基本命令的函数,这些命令用于return一次输入一行的信息。
我想做的是输入我通过脚本创建的变量名,并让函数句柄打印内容。
我意识到我可以很容易地 >>> dumpVar
来查看显示在一行中的数组 -- 但我正在尝试弄清楚如何传递...我猜是元信息...通过用户输入传递给解释器。如果这有任何意义。
无论如何我一直在尝试使用exec()
,但是我把它放在函数中的任何地方都会产生异常,而且唯一一次没有产生异常,它只是打印了一个字符dumpVar
一次,每次都创建一个新行(当然,新行是所需的行为)。
那么,如何修改函数以生成变量的内容,而不是输入字符串的字符?
根据 OP 的评论更新。他的意图是通过输入来引用变量,他的原标题没有说清楚。解决方案是实现一个字典,通过字符串键引用 objects:
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)
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? _
.
下面是 运行 -- 我有一个名为 'example' 的 .py 文件,我正在从解释器 运行 中加载它以加载我可以使用的代码环境。这个特定的环境包含一个数组(已经填充)和一个带有一些基本命令的函数,这些命令用于return一次输入一行的信息。
我想做的是输入我通过脚本创建的变量名,并让函数句柄打印内容。
我意识到我可以很容易地 >>> dumpVar
来查看显示在一行中的数组 -- 但我正在尝试弄清楚如何传递...我猜是元信息...通过用户输入传递给解释器。如果这有任何意义。
无论如何我一直在尝试使用exec()
,但是我把它放在函数中的任何地方都会产生异常,而且唯一一次没有产生异常,它只是打印了一个字符dumpVar
一次,每次都创建一个新行(当然,新行是所需的行为)。
那么,如何修改函数以生成变量的内容,而不是输入字符串的字符?
根据 OP 的评论更新。他的意图是通过输入来引用变量,他的原标题没有说清楚。解决方案是实现一个字典,通过字符串键引用 objects:
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)