白駿4344:平均値を超えるだろう|パイソン

1316 ワード

質問する


大学生の新入生の90%が、自分がクラスにいる平均数を超えたと考えている.あなたは彼らに悲しい真実を伝えるべきだ.


入力


第1行は、試験例の個数Cを与える.
2行目から、各テストケースには、学生数N(1≦N≦1000、Nは整数)の最初の数字が与えられ、次いでN名の点数が与えられる.分数が0以上、100以下の整数.


しゅつりょく


それぞれの場合、平均値の1行を超える学生の比率を四捨五入し、小数点を3位に出力します.


に答える

c= int(input())
for i in range(c):
    nums= list(map(int, input().split()))
    avg = sum(nums[1:])/nums[0]
    cnt = 0
    for score in nums[1:]:
        if score>avg:
            cnt += 1
    rate = (cnt/nums[0])*100
    print(f'{rate:.3f}%')
試験用例個数cの入力

for文を使用してc範囲に数値を入力します.
スペースで入力し、リストで囲みます
ここで変数iは意味がない(iの代わりに「」を使う人もいる)
cが5の場合、0~4のインデックス値のみが入力され、リストが生成されます.
超えた場合は、0~4と入力してリストを生成します(説明がおかしいです)

平均、avgリストnumsを求める[1]:
すなわち,インデックス位置1から終了までsumを用いて加算する.
インデックス位置0 nums[0]から区切る

平均より高い学生を探すために.
cnt変数を設定し、初期値を0に指定します.

for文を使用してscore変数を指定しnums[1]
すなわちnums[1]の範囲内の数字はscoreである.
scoreがavgより高い場合、cntの値は1つ増加します.
cnt+=1はcnt=cnt+1を表す

平均より高い学生の割合をパーセントで比率に格納する
print文でf-string文を使用して小数点3ビットに出力
f-string文字列を使用する場合は前にfを付け、文字列「」に
変数、計算式はカッコで入力できます
f-stringで小数点以下の桁数を指定する場合は{変数:.3 f}を使用します.
区切り記号":"は、変数の左側の小数点以下の桁数、右側の小数点以下の桁数を指定します.