0

この Python コースをオンラインで受講しており、x 値が 3 のときにこのループが無限になる理由を理解しようとしています。

def mystery(x):
  a = [0, 4, 0, 3, 2]
  while x > 0:
    x = a[x]
  return "Done"

mystery(3) は無限に実行されます。

リストの値がすでに 3 になっているのに、x を 3 に設定しようとしているからですか?

4

5 に答える 5

4

配列のインデックスは 0 から始まることを覚えておいてください。

a = [0, 4, 0, 3, 2]

それからa[3] == 3

だからこの行

x = a[x] 

x3 以外に設定することはありません。

于 2013-09-12T07:25:41.220 に答える
2

「リストの値がすでに 3 になっているのに、x を 3 に設定しようとし続けるからですか?」

はい。そのリストの をa[3]指します。3だから、繰り返しx割り当てられているだけです。3

于 2013-09-12T07:25:49.940 に答える
0

リストのインデックスは 0 から始まるので、a[3]=3 であることを思い出してください。次に、ループを手動で展開してみます。

  1. x = 3

    x=3 > 0、はい

  2. x = a[x] = a[3] = 3

    x=3 > 0、はい

  3. x = a[x] = a[3] = 3

    x=3 > 0、はい

等々。

于 2013-09-12T07:28:09.947 に答える
0
def mystery(x):               # Here x = 3
  a = [0, 4, 0, 3, 2]         
  while x > 0:                # Since x = 3 the program enters the loop
    x = a[x]                  # a[3] = 3 and hence x is assigned 3. Again x = 3 and therefore 
                              # the program will get into an infinite loop in the while 
                              # statement.
  return "Done"
于 2013-09-12T07:39:29.763 に答える