2016-11-10 88 views
0

我想在python3中从用户处获取输入字符串。例如:abc是一个输入字符串。现在我想用“abc”名称创建一个字典内幕我的程序。是否有可能?如何使用用户输入的名称创建变量?

+1

当然,有什么困扰吗?这个名字的价值是什么? –

+0

它将是运行时给出的输入 –

+0

我是堆栈溢出的新手,我在Google搜索时没有发现这个问题。你可以将这个帖子取消为重复。 –

回答

0

这是非常可能的,但我不建议尝试去做。如果你真的需要你的要求的东西,像这样的工作:

>>> exec(input("Enter name: ") + ' = {}') 
Enter name: myDict 
>>> myDict 
{} 
>>> locals()['myDict'] 
{} 
>>> 

但是它通常A bad idea to use exec()是特别的input()的组合。没有它,通常有更好的方法去做某件事。实际上,有一个更好的方法来做到这一点。

而不是试图根据用户输入创建变量,而是使用字典。这样,你可以很好地控制你的“变量”。您可以轻松地扩展这个从用户输入不止一个“变量”添加到您的变量词典:

>>> varDict = {} 
>>> name = input("Enter name: ") 
Enter name: myDict 
>>> varDict[name] = {} 
>>> varDict[name] 
{} 

您可以动态创建使用while循环,并input()变量。创建一个字典来保存所有用户输入的变量。创建一个while循环,然后询问用户一个变量的名称和值:

>>> varDict = {} 
>>> while True: 
     name = input("Enter a variable name: ") 
     value = input("Enter a variable value: ") 
     varDict[name] = value 


Enter a variable name: var1 
Enter a variable value: a 
Enter a variable name: var2 
Enter a variable value: b 
Enter a variable name: var3 
Enter a variable value: c 
Enter a variable name: 
Traceback (most recent call last): 
    File "<pyshell#12>", line 2, in <module> 
    name = input("Enter a variable name: ") 
KeyboardInterrupt 
>>> varDict 
{'var1': 'a', 'var2': 'b', 'var3': 'c'} 
>>> 
+0

感谢您的帮助。实际上,我必须创建一个编译器,像python中的程序,用于大学任务,我们没有在课堂上教过任何东西。因此,为了轻松实现一个类似于结构的功能,我试着如果这个动态命名是可能的,这样我的工作可以变得更容易一些。你能否提出一种不太复杂的方法来实现像特征这样的结构。任何帮助将不胜感激。 –

+0

另外,我在想,即使我创建了一个带有输入名称的字典,那么我如何能够访问我的进一步程序中的字典 –

+0

@helptaker关闭你会得到无缝的动态命名是使用字典。实际上,这不是一个复杂的方法。我会添加一些更多的答案,以帮助清除你的困惑。 –