超入門者向けのPythonサンプルコード記事です。問題と、解答例となるサンプルコードをセットに公開しています。難しい用語の解説は控えめに、まずは動かしてみたい人向けのコンテンツです。
はじめに
どうもMizokeiです。Python超入門シリーズですが、今回はおまけの記事です。ちょっと複雑なコードが出てきますのであくまで参考として御覧ください。
先日、数値のリストを降順に並び替えるというサンプルコード記事を公開しました。並び替えるという処理は、プログラミングの世界では「ソート」という言葉で、さまざまなコードの書き方が存在します。
そんな中、自身が書いたコードが、どのような並び替えを行っているか、頭の中だけで考えるのでは大変な場合も有ることでしょう。
今日は、そんなリストの要素の並び替えを、少しでもわかりやすく表示できないか、ちょっとしたコードを書いてみました。
先日の問題
65, 32, 21, 43, 2, 4, 1, 8, 16の要素を持つリストを定義し、降順に並び替えよ。並び替え前後がわかるように、「並び替え前」と「並び替え後」の2パターン出力せよ。
リストの要素を表示するコードを追加
リストの要素がどのような並びとなっているか、■や□の記号を使って表示させてみました。出力結果が長いので、サンプルコードと順番を入れ替えて記載します。
また、サンプルコード内には、出力を調整するために改行目的でprint()を複数箇所で使用しています。
サンプルコード
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# -*- coding: utf-8 -*- ''' 並び替えてみよう ''' #数値の切り上げ import math #リスト要素を資格的に表示する def list_printer(input_list): #各リストの百分率 percentage_of_list_items = [] for item in input_list: #1~10に切り上げて反転 percentage_of_list_items.append(10 - math.ceil(item/10)) #スライスコピー percent_list = percentage_of_list_items[:] #改行 print() #10回繰り返す for i in range(10): print('\t', end='') for j in range(len(percent_list)): if percent_list[j] != 0: print(' □□ ', end='') percent_list[j]-=1 else: print(' ■■ ', end='') print() print('\t', end='') for value in input_list: #左寄せで表示する print(' {:<2d} '.format(value), end='') #改行 print() print() #メイン処理 if __name__ == '__main__': #アナウンス print() print('並び替えプログラムを実行します。') #1~100までの要素を持つ数値のリスト num_list = [65, 32, 21, 43, 2, 4, 1, 8, 16] #リストを表示する print() print('並び替え前:' + str(num_list)) #リスト要素を資格的に表示する list_printer(num_list) # # 以下、リストを並び替える # #リストを辿るための変数 i = 0 j = 0 #値を交換するために使用する一時的な変数 tmp = 0 #一つずつリストの要素を辿る for i in range(0, len(num_list)-1, 1): #辿っている要素以降の要素を辿る for j in range(i, len(num_list), 1): #リスト内の2つの要素を比較し小さな値がないか(降順か)確認する if num_list[i] < num_list[j]: #大きな値があれば小さな値と交換する tmp = num_list[i] num_list[i] = num_list[j] num_list[j] = tmp #リスト要素を資格的に表示する list_printer(num_list) #並び替えたリストを表示する print() print('並び替え後:' + str(num_list)) #リスト要素を資格的に表示する list_printer(num_list) #アナウンス print('並び替えプログラムを終了します。') print() |
出力結果
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
並び替えプログラムを実行します。 並び替え前:[65, 32, 21, 43, 2, 4, 1, 8, 16] □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ ■■ □□ □□ □□ □□ □□ ■■ ■■ □□ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 32 21 43 2 4 1 8 16 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 21 32 2 4 1 8 16 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 2 4 1 8 16 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 4 2 1 8 16 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 8 2 1 4 16 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 16 2 1 4 8 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 16 4 1 2 8 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 16 8 1 2 4 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 16 8 2 1 4 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 16 8 4 1 2 □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 16 8 4 2 1 並び替え後:[65, 43, 32, 21, 16, 8, 4, 2, 1] □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ □□ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ □□ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ □□ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ □□ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ □□ □□ □□ □□ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ 65 43 32 21 16 8 4 2 1 並び替えプログラムを終了します。 |
関連記事
【Python】ピクセル値を操作して画像を作成してみよう【画像処理】
【Python×業務自動化】Excelを起動する【RPA】
【Python超入門】クラスを作成してみよう