Python3 3値の中央値についての標準入力
解決したいこと
Python3の標準入力で3値の中央値を出力したい
該当するソースコード
a = int(input())
b = int(input())
c = int(input())
sum = a + b + c
ave = sum / 3
print(ave)
これでよいでしょうか
0
Python3の標準入力で3値の中央値を出力したい
a = int(input())
b = int(input())
c = int(input())
sum = a + b + c
ave = sum / 3
print(ave)
これでよいでしょうか
それは中央値ではなく平均値です。中央値を求めるには、3値を大きさの順に並べて真ん中にある値を取り出してください。(今回は関係ありませんが、値の総数が偶数個なら真ん中の値2つを取り出して平均を取ります。)
コード例を示しておきます.
a = int(input())
b = int(input())
c = int(input())
if a > b:
a, b = b, a
if b > c:
b, c = c, b
if a > b:
a, b = b, a
print(b)
昇順$a < b < c$にするアルゴリズムの考え方を示しておきます.
a
, b
)が昇順になっていない($a > b$の状態)ならa
とb
を入れ替える.b
, c
)が昇順になっていない($b > c$の状態)ならb
とc
を入れ替える.c
が最小値だったかもしれないので2でb
と入れ替えられていたときのために(a
, b
)が昇順になっていない($a > b$の状態)ならa
とb
を入れ替える.以上になります.今は比較回数は合計3回ですが,どんどん値の個数を大きくしていくと比較回数は並べたい値の個数を$N$個とすると$N(N - 1) / 2$回になることがわかります.このアルゴリズムの名前をバブルソートと言います.
いくつか類題を示しておきます.参考にしてください.
3値の中央値を求める
https://atcoder.jp/contests/abc019/tasks/abc019_1
N値の中央値を求める
https://algo-method.com/tasks/501
print(sorted([a, b, c])[1])
でしょうか。
(a, b, cを小さい順に並び替えて0,1,2番目の3つから、中央の1番目の値を表示)