13

Python では、ユーザーに数値 X を入力してもらい、プログラムがユーザーが X 値を入力する for ループに入った場合、変数名を自動的にインクリメントする方法はありますか/それは悪い考えですか?

すなわち:

user inputs '6'  
value_1 = ...  
value_2 = ...  
value_3 = ...  
value_4 = ...  
value_5 = ...  
value_6 = ...

ユーザーが入力した変数の数を取得できるように、変数名をそのようにインクリメントすることはできますか? または、すべての新しい値をリストに追加するなど、まったく別の方法を使用する必要がありますか?

4

4 に答える 4

15

すべての値をリストに追加する必要があります。これにより、後で値を簡単に反復処理できるだけでなく、名前空間に無駄な変数や魔法を散らかすことがなくなります。

于 2010-03-21T19:46:22.760 に答える
10

ここではリストまたは辞書を使用するのがもちろん正しい方法ですが、exec() を使用して名前付き変数を作成することもできます。リストと辞書が提供するすべての便利な操作 (len()、挿入、削除、並べ替えなどを考えてください) を見逃してしまいますが、それは可能です:

count = raw_input('Number of variables:')
for i in xrange(count):
    exec('var_' + str(i) + ' = ' + str(i))

exec() は、有効な Python 式を含む文字列を受け入れて実行します。したがって、上記のコードはオンザフライでコードを生成および実行しています。

于 2010-03-22T11:21:28.670 に答える
9

すべての新しい値をリストに追加するなど、まったく異なる方法を使用する必要がありますか?

はい、リストを使用できます。これにマッピングを使用することもできます。

変数名をそのようにインクリメントさせる

いいえ、それは恐ろしく悪い考えです。


「しかし、完全な好奇心から、これらは求められた方法でそれを行う方法ですか?」

はい、しかしそれは明らかに恐ろしく悪い考えです。だから、それを見せても意味がありません。試みることさえひどい、ひどいことです。

于 2010-03-21T20:29:04.970 に答える