Kenta-K
@Kenta-K

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Python3 3値の中央値についての標準入力

解決したいこと

Python3の標準入力で3値の中央値を出力したい

該当するソースコード

a = int(input())
b = int(input())
c = int(input())

sum = a + b + c

ave = sum / 3

print(ave)

これでよいでしょうか

0

3Answer

それは中央値ではなく平均値です。中央値を求めるには、3値を大きさの順に並べて真ん中にある値を取り出してください。(今回は関係ありませんが、値の総数が偶数個なら真ん中の値2つを取り出して平均を取ります。)

2Like

コード例を示しておきます.

3値の中央値
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$にするアルゴリズムの考え方を示しておきます.

  1. 最初の2つ(a, b)が昇順になっていない($a > b$の状態)ならabを入れ替える.
  2. 次の2つ(b, c)が昇順になっていない($b > c$の状態)ならbcを入れ替える.
  3. 2をやる前にはcが最小値だったかもしれないので2でbと入れ替えられていたときのために(a, b)が昇順になっていない($a > b$の状態)ならabを入れ替える.

以上になります.今は比較回数は合計3回ですが,どんどん値の個数を大きくしていくと比較回数は並べたい値の個数を$N$個とすると$N(N - 1) / 2$回になることがわかります.このアルゴリズムの名前をバブルソートと言います.

いくつか類題を示しておきます.参考にしてください.

3値の中央値を求める
https://atcoder.jp/contests/abc019/tasks/abc019_1

N値の中央値を求める
https://algo-method.com/tasks/501

0Like

print(sorted([a, b, c])[1])
でしょうか。
(a, b, cを小さい順に並び替えて0,1,2番目の3つから、中央の1番目の値を表示)

0Like

Your answer might help someone💌