同率を考慮した2番目に大きい数字を表示

リストデータを降順(100,99,98…)に並べ替えて1番目に大きい数字と2番目に大きい数字を表示するPythonプログラムを作成せよ、という課題が出せれて作成したのですが、同率を考えていないということで減点になったので同率を考慮したプログラムを下に書きます。


for文を使ってプログラムを作成しているので、for文の基礎について書いた投稿を載せておきます。

ColaboratoryでPython基礎 for文

下のプログラムが減点されたプログラムになります。

実行結果

[99, 99, 76, 54, 34]
1番目に大きい 数字99
2番目に大きい数字 99

①降順に並び替えています[99,54,76,99,34]==>[99, 99, 76, 54, 34]


同率を考慮したプログラム

実行結果

[99, 99, 76, 54, 34]
1番目に大きい 99
2番目に大きい 76

①はlist_data[]の中で一番大きい数字を変数list_maxに入れています。

②は1番大きい数字じゃないときflag変数が+1されます。

③はflag変数が1ならmax_secound変数に1番大きい数字じゃない、2番目に大きい数字が入ります。

長いので少し短くしたプログラムが下になります。

実行結果

[99, 99, 76, 54, 34]
1番目に大きい 99
2番目に大きい 76

①sorted関数で降順に並び替えをして短くしています。

flagを使わないやり方

こっちの方が短いです