2016-04-08 3 views
0

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? _ 
                          . 

はここ--Iダウン運転だ私はから実行している '例' という名前の.pyファイルを持っていますインタプリタを使ってコード環境を読み込むことができます。この特定の環境には、1つの配列(すでに入力されている)と、入力に関する情報を一度に1行ずつ返すための基本コマンドを装備した単一の関数が含まれています。

私がしたいのは、スクリプトで作成した変数名を入力し、その内容を印刷する関数を持つようにします。

>>> dumpVarは、1行に表示された配列を表示することができますが、私はどのようにすればよいかを理解しようとしています...私はメタ情報を推測します。ユーザ入力。それが意味をなさないならば。

とにかく私はexec()を使用しようとしていましたが、例外を生成する傾向があり、例外を生成しない唯一の時間は、一度にdumpVarの1文字を印刷しただけです。毎回新しい行を作成します(もちろん、新しい行は望ましい動作です)。

したがって、入力文字列の文字ではなく、変数の内容を生成するために関数を変更するにはどうすればよいですか?

答えて

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) 
+0

これはpythonのドキュメントでlist()を検索した後の答えだと思っていましたが、試してみましたが、このコメントのスペースがインタープリタの新しい行を表す 'dump V ar'を再度生成しました。 – Musixauce3000

+0

私は最初にやりたいことを知らなかった。辞書の使用を検討し、私の答えを更新します。また、印刷時に新しい行を削除するには、 'end ='が '' ''の' print(object [、end =]) 'を使います。 –

+0

この関数は、ユーザが入力した変数名の内容を一度に1行戻すことを目的としています。 – Musixauce3000

関連する問題