【Python】4344号:平均は超えているでしょう



一度で解決したけど変数がたくさん出た気がする!
C = int(input())

for i in range(C):  # C번 반복
    l = list(map(int, input().split()))  #
    N = l[0]  # 리스트의 첫 요소값은 학생의 수
    total = 0  # 점수 총 합
    avg = 0    # 평균 점수
    pass_ratio = 0  # 평균을 넘는 학생들의 비율
    count = 0  # 평균을 넘으면 카운트 해준다.
    for j in range(N):  # 총 합을 구한다
        total = total + l[j+1]
    avg = total / (len(l) - 1)  # 평균을 구한다.
    for k in range(N):  # 평균을 넘는 학생 수를 구한다
        if l[k+1] > avg:
            count = count + 1
    pass_ratio = count / (len(l) - 1) * 100  # 평균을 넘는 학생들의 비율을 구한다
    print("{0:.3f}%".format(pass_ratio))  # format()을 사용하여 형식을 지정해준다.
googlingでいい解決策を探しましょう~~
n = int(input())

for _ in range(n):
    nums = list(map(int, input().split()))
    avg = sum(nums[1:])/nums[0]  # 평균을 구함 (nums[0]: 학생수, nums[1:] 점수)
    cnt = 0
    for score in nums[1:]:
        if score > avg:
            cnt += 1  # 평균 이상인 학생 수
    rate = cnt/nums[0] *100
    print(f'{rate:.3f}%')
  • で学んだこと
  • sum()を用いてリストの和を容易に求めることができる.
  • list[1]のように、リストの非全部分しか求められない.
  • すべての数字を変数に含める必要はありません.
  • ホイール(40.0,3)は40.0ではなく40.0を返します.したがって,「{0:.3 f}%」.format(40.0)に示すように、記入すると400000が得られます.