質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

856閲覧

昇順に並び替えるプログラムについて

syozan

総合スコア13

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/17 11:36

python

1list = [70,15,66,21,19,97,33,44,30,2] 2disp = "" 3for k in range(len(list) - 1,0,-1): 4 print(str(len(list) - k) + "度目") 5 for j in range(0,k): 6 if list[j] > list[j+1]: 7 temp = list[j] 8 list[j] = list[j+1] 9 list[j+1] = temp 10 for i in list: 11 disp = disp + str(i) + "" 12 print(disp) 13 disp = ""

結果:
1度目
157066211997334430215667021199733443021566217019973344302156621197097334430215662119977033443021566211997337044302156621199733447030215662119973344307021566211997334430270
2度目
66702119973344302706621701997334430270662119709733443027066211997703344302706621199733704430270662119973344703027066211997334430702706621199733443027070
3度目
2166199733443027070211966973344302707021199766334430270702119973366443027070211997334466302707021199733443066270702119973344302667070
4度目
192197334430266707019972133443026670701997332144302667070199733442130266707019973344302126670701997334430221667070
5度目
97213344302216670709733214430221667070973344213022166707097334430212216670709733443022121667070
6度目
3397443022121667070334497302212166707033443097221216670703344302972121667070
7度目
449730297212166707044309729721216670704430297972121667070
8度目
30442979721216670703024497972121667070
9度目
2304497972121667070

このプログラムは実行結果を昇順(listの数字)にしようとしています。
エラーも出ずに、実行結果が表示されましたが、昇順になっておらず、その実行結果の意味も分からないままです。
解決策を教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

インデントをいくつか修正しました。
元のコードと見比べてみてください。

Python

1list = [70,15,66,21,19,97,33,44,30,2] 2disp = "" 3for k in range(len(list) - 1,0,-1): 4 print(str(len(list) - k) + "度目") 5 for j in range(0,k): 6 if list[j] > list[j+1]: 7 temp = list[j] 8 list[j] = list[j+1] 9 list[j+1] = temp 10 for i in list: 11 disp = disp + str(i) + " " 12 print(disp) 13 disp = "" 14#1度目 15#15 66 21 19 70 33 44 30 2 97 16#2度目 17#15 21 19 66 33 44 30 2 70 97 18#3度目 19#15 19 21 33 44 30 2 66 70 97 20#4度目 21#15 19 21 33 30 2 44 66 70 97 22#5度目 23#15 19 21 30 2 33 44 66 70 97 24#6度目 25#15 19 21 2 30 33 44 66 70 97 26#7度目 27#15 19 2 21 30 33 44 66 70 97 28#8度目 29#15 2 19 21 30 33 44 66 70 97 30#9度目 31#2 15 19 21 30 33 44 66 70 97

※今回は質問者さんのコード中の記述のままにしましたが変数名にlistは使わない方が良いです。

投稿2021/11/17 11:49

meg_

総合スコア10609

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syozan

2021/11/17 11:51

ありがとうございます。
guest

0

ベストアンサー

おそらくインデントがおかしいです。以下が正しいと思われます。
また、結果表示に空白を入れるように修正しています。

Python

1list = [70,15,66,21,19,97,33,44,30,2] 2disp = "" 3for k in range(len(list) - 1,0,-1): 4 print(str(len(list) - k) + "度目") 5 for j in range(0,k): 6 if list[j] > list[j+1]: 7 temp = list[j] 8 list[j] = list[j+1] 9 list[j+1] = temp 10 for i in list: 11 disp = disp + str(i) + " " 12 print(disp) 13 disp = ""

投稿2021/11/17 11:47

can110

総合スコア38286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syozan

2021/11/17 11:51

ありがとうございます。
syozan

2021/11/17 11:55 編集

すみません、質問よろしいでしょうか。 インデントを間違えるとエラーだけが起こるものだと思っていましたが、実行結果も変わってくるのでしょうか。
can110

2021/11/17 11:57

はい。必ずしもエラーになるわけではないです。 今回のように意図しない結果になったりします。
syozan

2021/11/17 11:58

わかりました、重ね重ねありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問