-2

掛け算の九九を表示する小さなプログラムを書きました。ローカル変数を理解していたので、各関数に同じ名前の2つの変数を追加しました。しかし、それは実行されており、同じ名前のエラーを持つ2つの変数を取得していません。ここでアイデアを理解するのを手伝ってください -

def printMultiples(n):
    i = 1
    i = 5
    while i <= 10:
        print n*i, '\t',
        i = i + 1
    print

def printMultTable():
    i = 1
    i = 10
    while i <= 10:
        printMultiples(i)
        i = i + 1
4

5 に答える 5

1

変数iは関数が実行されるとすぐに定義され、行まで待機しません

i = 1
i = 10

実行されます。globalコードがコンパイルされると、Python は関数に割り当てられているすべての変数を調べ、 orとして宣言されていない変数の定義を作成しますnonlocal

各行i =は値を変更するだけで、再度定義されることはありません。

于 2012-08-19T00:28:33.683 に答える
1

スクリプトで何が起こっているかを次に示します。

i = 1

変数iを作成し、それに値 1 を割り当てます

i = 5

i保持されている値を 5に置き換えます

while i <= 10:

ループを開始します

    print n*i, '\t',

ループの最初の反復では、n * 5 とタブ文字が出力されます。

    i = i + 1

i を 1 ずつ増やします

于 2012-08-19T00:28:40.597 に答える
1

同じ名前の 2 つの変数はありません。1 つの変数が 2 回割り当てられています。

i = 1  # i is declared and assigned to 1
i = 5  # the same i is reassigned to 5
于 2012-08-19T00:28:52.087 に答える
1

実際には、同じ名前の 2 つの変数を作成しているわけではありません。の値に設定するのと同じように、2 番目i =は新しい値に再割り当てされます。ii = i + 1ii + 1

ちなみに、一定回数のループを処理する Pythonic の方法は他にもあります。

for i in range(1, 11):
    printMultiples(i)

これはprintMultiples、1 から始まり 11 未満の値に対して実行されます。

于 2012-08-19T00:29:10.313 に答える
1

Python では、シンボルは単なる変数の名前です。たとえば、C/C++ の場合のようにメモリを割り当てません。したがって、あなたがしているのは、それぞれの場合に単に値を「i」に再割り当てすることです。

于 2012-08-19T00:29:23.187 に答える