Pythonについて質問です。a = [5, 4, 3, 6, 2, 1]print(a)b = len(a)for i in range(b): c = ifor j in range (i+1, b) if a[c] \u0026gt; a[j]: c = j a[i], a[c] = a[c], a[i]print(a)↑(回答の際に、forの下の文の4マスの空白が、消えています。)これが、[5, 4, 3, 6, 2, 1] [1, 2, 3, 4, 5, 6]と表示されると見たのですが、どうしてこうなるか分かりませんでした。for文の中にfor文があるとき、この場合 まずfor i in range(b)→iが0となり、c=iよりc=0for j in range(0+1,6)if a[0]\u0026gt;a[1] つまり、5\u0026gt;4がなりたちc=j により、c=1となり、for j in range(0+1, 6)に戻ってくるif a[1]\u0026gt;a[2] つまり、4\u0026gt;3がなりたちc=j により、c=2となり、for j in range(0+1, 6)if a[2]\u0026gt; a[3]つまり、3\u0026gt;6がなりただず、a[0], a[2]= a[2], a[0]a[6, 4, 3, 5, 2, 1]このような感じで、[6, 5, 4, 3, 2, 1]と大きい順に変わると思ったのですが、どこを間違えているか、わかりません。よろしくお願いします。

1件の回答

回答を書く

1018858

2026-02-12 09:10

+ フォロー

for文の中にfor文があるとき、この場合

まずfor i in range(b)→iが0となり、c=iよりc=0

for j in range(0+1,6)

if a[0]\u0026gt;a[1] つまり、5\u0026gt;4がなりたち

c=j により、c=1となり、・・・・①



for j in range(0+1, 6)に戻ってくる・・・・②

if a[1]\u0026gt;a[2] つまり、4\u0026gt;3がなりたち

c=j により、c=2となり、



for j in range(0+1, 6)

if a[2]\u0026gt; a[3]つまり、3\u0026gt;6がなりただず、

a[0], a[2]= a[2], a[0]

a[6, 4, 3, 5, 2, 1]





①と②の間、省略しすぎです。



if a[0]\u0026gt;a[1] つまり、5\u0026gt;4がなりたち

c=j により、c=1となり、・・・・①

a[0], a[1] = a[1], a[0]により

a[0] = a[1]であるからa[0]は4、

a[1] = a[0]でa[1] = 5です。

で、a == [4, 5, 3, 6, 2,1]となる。



for j in range(0+1, 6)に戻ってくる・・・・②

if a[1]\u0026gt;a[2] つまり、4\u0026gt;3がなりたち・・・・ここが違う。5と3の比較です。

c=j により、c=2となり、

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有