점수: [98, 67, 99, 52, 89, 78, 57, 65, 50, 74, 58, 71, 68, 96, 86, 85, 93, 94, 66, 97]
-> 이 점수들을 내림차순 정렬하면 가장 큰 값이 1등, 그 다음이 2등 …
scores = [98, 67, 99, 52, 89, 78, 57, 65, 50, 74,
58, 71, 68, 96, 86, 85, 93, 94, 66, 97]
# 각 점수에 대한 순위 계산
ranks = [1] * len(scores)
for i in range(len(scores)):
for j in range(len(scores)):
if scores[i] < scores[j]: # 나보다 높은 점수가 있으면
ranks[i] += 1 # 내 순위는 1씩 내려감
print("점수:", scores)
print("순위:", ranks)
점수: [98, 67, 99, 52, 89, 78, 57, 65, 50, 74, 58, 71, 68, 96, 86, 85, 93, 94, 66, 97]
순위: [2, 13, 1, 19, 6, 9, 17, 15, 20, 10, 16, 11, 12, 3, 7, 8, 5, 4, 14, 3]
학급 학생 20명의 중간고사와 기말고사 성적을 난수로 생성하고,
각각의 순위를 구한 뒤 순위 변화(편차)를 출력해보자.
import random
# 1) 난수로 성적 생성 (1~100 사이 점수, 20명)
midterm = [random.randint(1, 100) for _ in range(20)]
final = [random.randint(1, 100) for _ in range(20)]
# 2) 순위 계산 함수
def get_ranks(scores):
ranks = [1] * len(scores)
for i in range(len(scores)):
for j in range(len(scores)):
if scores[i] < scores[j]:
ranks[i] += 1
return ranks
midterm_ranks = get_ranks(midterm)
final_ranks = get_ranks(final)
# 3) 순위 변화(편차) 계산
diff = [midterm_ranks[i] - final_ranks[i] for i in range(20)]
# 4) 출력
print("중간고사 점수:", midterm)
print("기말고사 점수:", final)
print("중간고사 순위:", midterm_ranks)
print("기말고사 순위:", final_ranks)
print("순위 변화(편차):", diff)
중간고사 점수: [35, 87, 55, 91, 60, ...]
기말고사 점수: [70, 45, 92, 66, 51, ...]
중간고사 순위: [18, 5, 13, 2, 11, ...]
기말고사 순위: [6, 15, 1, 7, 14, ...]
순위 변화(편차): [12, -10, 12, -5, -3, ...]