2016-09-02 5 views
-1

にVBA配列を翻訳します。私はこの質問について多くの調査を行ったことを保証しますが、私が読んだ30の程度の書類は私の問題を説明していないようです。は、私はVBAで合理的に経験豊富なプログラマーだが、Pythonの2日目の午前と言って</p> <p>私が最初にすべての始まりかもしれIDLE/Pythonの3.5.1を使ってPython

また、他のドキュメントやリンクへの参考になるものではなく、Python 3.5.1用の適切な書式のコードがありますか?

問題

私はレポートを実行し、私が行くように結果を出力しています。私は後でそれらを参照できるように、これの間に結果を(おそらく配列で)保存する必要があります。レポート(および配列の作成)は複数回再実行できるので、配列を作成するときに「追加」のような概念を使用している場合は、そのことを覚えておいてください。配列の次元は[25,4]です。最大25個のレコードがあり、それぞれに4つのアイテムがあります。

Day X Y Z Total 
1  2 3 4 9 
2  3 4 5 12 ... 

(Purists: The total needs to be recorded rather than calculated because of rounding.) 

誰かが(説明のためにVBAから)のPythonへのコードのこのビットを変換することができれば、私はこの問題を自分で解決することができます。私はそれが唯一の方法でない限り、配列モジュールをインポートしたくありません。注:変数lは、配列を2回構築して、アレイを1回だけ作成するのではなく最初から再構築できることを実証するためのループです。

Sub sArray() 
    Dim a(25, 4) 
    For l = 1 To 2 
     For i = 1 To 25 
      For j = 1 To 4 
       a(i, j) = Int(100 * Rnd(1)) + 1 
       Debug.Print a(i, j); 
      Next j 
     Next i 
    Next l 
End Sub 

おかげで、

トム

+0

一般的に、オブジェクトの配列はPythonの 'list'sで処理されます命じました。 '配列'には、より具体的であまり一般的でないユースケースがあります。 [本当に配列が必要ですか?](http://stackoverflow.com/questions/176011/python-list-vs-array-when-to-use) – glibdud

+0

リストが標準である場合は、配列を使う必要はありません。 Python。私は同等の方法を知る必要があります。 –

答えて

0

私は私が正しくあなたの質問を得たかわからない... あなたのサイズの配列を(リストは、この場合は、より良い用語をIA)[ようにしたい場合あなたは「配列はゼロから再構築だけではなく、一度作成されることが可能であることが必要」と表示したい場合は、なぜ(WO

import random 
a = [[int(100*random.random())+1 for j in range(4)] for i in range(25)] 

>>> print a 
[[74, 17, 36, 75], 
[1, 79, 33, 90], 
[58, 66, 47, 95], 
[35, 40, 87, 38], 
[43, 46, 34, 66], 
[69, 34, 26, 49], 
[56, 83, 44, 14], 
[2, 44, 54, 97], 
[50, 21, 39, 60], 
[13, 94, 12, 48], 
[36, 13, 2, 71], 
[77, 44, 31, 11], 
[56, 26, 30, 39], 
[17, 13, 83, 84], 
[54, 37, 34, 18], 
[5, 54, 88, 100], 
[22, 77, 70, 21], 
[51, 88, 26, 97], 
[69, 33, 86, 48], 
[42, 66, 38, 78], 
[71, 43, 96, 23], 
[6, 46, 100, 29], 
[32, 86, 15, 48], 
[96, 84, 8, 56], 
[29, 64, 69, 79]] 

:25.4]これは行くための一つの方法でありますあなたは

for l in range(2): 
    a = [[int(100*random.random())+1 for j in range(4)] for i in range(25)] 

また、乱数を生成する方法は、(私はあなたの方法を翻訳した)奇数である)、この??を必要とするULD。 Pythonで同じ結果を得るには、​​を使って1からランダムな整数を生成してください(あなたは0を望んでいないと思います)。

私が正しくあなたのコメントから理解している場合、これはあなたが望むものである:

def report(g=25): 
    array = [] 
    for _ in range(g): 
     x = random.randint(1,10) 
     y = random.randint(1,10) 
     z = random.randint(1,10) 
     total = x+y+x 
     row = [x,y,z,total] 
     print(row) 
     array.append(row) 
    return array 

result = report() 
#prints all the rows while computing 

>>> result #stores the "array" 
[8, 4, 3, 20] 
[10, 7, 4, 27] 
[2, 4, 5, 8] 
[8, 5, 8, 21] 
[9, 7, 2, 25] 
[2, 2, 3, 6] 
[5, 8, 6, 18] 
[8, 6, 1, 22] 
[7, 6, 4, 20] 
[7, 2, 10, 16] 
[6, 5, 9, 17] 
[3, 8, 8, 14] 
[9, 1, 9, 19] 
[1, 7, 7, 9] 
[6, 6, 2, 18] 
[9, 10, 1, 28] 
[4, 6, 2, 14] 
[6, 1, 6, 13] 
[4, 1, 3, 9] 
[5, 3, 5, 13] 
[7, 5, 2, 19] 
[9, 5, 7, 23] 
[2, 5, 8, 9] 
[3, 10, 4, 16] 
[5, 6, 5, 16] 
+0

質問者の用語「配列」を使用している間は、実際にリストを扱っていることに気づくはずです。 [配列](https://docs.python.org/3/library/array.html)はPythonに存在し、別の動物です。 – glibdud

+0

表示された男は、 'array'のインポートを避けるように頼んだので、' list'は私が思う唯一の選択肢です。 –

+0

私は同意しますが、あなたの答えの中で言葉を引き合いに出すことは、もっと混乱を招くだけです。 – glibdud

関連する問題

 関連する問題