2016-11-10 8 views
0

私はpython3でユーザーからの入力文字列を取りたいと思っています。たとえば、abcは入力文字列です。今、私は "abc"という名前の辞書を作成したいと思っています。可能でしょうか?名前をユーザーから入力した変数を作成する方法は?

+1

もちろん、何が問題になっていますか?その名前の価値は何ですか? –

+0

実行時に入力された入力になります –

+0

私はオーバーフローのスタックが新しく、私がグーグルでこの質問を見つけませんでした。この投稿を重複としてマークすることはできますか? –

答えて

0

非常に可能ですが、やってみることはお勧めしません。あなたは本当にこのような何かが仕事とどのようなあなたが求めて、必要な場合:

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

しかし、それは一般的にA bad idea to use exec()特にinput()の組み合わせです。通常、それなしで何かをするより良い方法があります。実際には、がそれを行う良い方法があります。

ユーザー入力に基づいて変数を作成するのではなく、代わりに辞書を使用します。こうして、あなたはあなたの "変数"をうまくコントロールすることができます。あなたは簡単にあなたの変数辞書にユーザーの入力から複数の「変数」を追加するためにこれを拡張することができます:あなたは動的にwhileループ、およびinput()を使用して変数を作成することができ

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

。ユーザーが入力したすべての変数を保持する辞書を作成します。 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シームレスな動的命名になるのは辞書を使うことだ。そして実際、これは方法の複雑さではありません。私はあなたの混乱をクリアするために私の答えにいくつかを追加します。 –

関連する問題