파이썬(Python)

파이썬, for문, if~elif~else문, 점수에 대한 레벨판별 프로그램 소스

초코생크림빵 2025. 9. 16. 17:42
반응형

score=[85,95,70,50,100]
n=0

print('코딩 시험 결과')
print(score)
print('-'*30)


for s in score:
    n = n + 1

    if s >= 90:
        result = 'Level1'
    elif s >= 80:
        result = 'Level2'
    elif s >= 70:
        result = 'Level3'
    else:
        result = 'FAIL'

    print(f'{n}번 학생의 점수는 {s}입니다.') # 띄어쓰기 조심하기
    print(f'결과는 {result}입니다.')
    print()


결과)
코딩 시험 결과
[85, 95, 70, 50, 100]
------------------------------
1번 학생의 점수는 85입니다.
결과는 Level2입니다.

2번 학생의 점수는 95입니다.
결과는 Level1입니다.

3번 학생의 점수는 70입니다.
결과는 Level3입니다.

4번 학생의 점수는 50입니다.
결과는 FAIL입니다.

5번 학생의 점수는 100입니다.
결과는 Level1입니다.

파이썬 소스 및 결과 입니다. 소스 설명)

 

 

학생들의 코딩 시험 점수를 평가하고, 각 점수에 따라 레벨을 부여한 뒤 결과를 출력하는 간단한 프로그램입니다.


코드 분석

1. 초기 설정

Python
 
score=[85, 95, 70, 50, 100]
n=0

print('코딩 시험 결과')
print(score)
print('-'*30)
  • score=[85, 95, 70, 50, 100]: score라는 이름의 리스트(list)를 만듭니다. 이 리스트에는 5명의 학생 점수가 순서대로 저장되어 있습니다.
  • n=0: 학생 번호를 세기 위한 변수 n을 만들고 초기값을 0으로 설정합니다.
  • print(): 제목, 전체 점수 목록, 그리고 구분을 위한 줄(- 30개)을 출력합니다.

2. 반복 및 조건 처리 (핵심 부분)

Python
 
for s in score:
    n = n + 1

    if s >= 90:
        result = 'Level1'
    elif s >= 80:
        result = 'Level2'
    elif s >= 70:
        result = 'Level3'
    else:
        result = 'FAIL'

    print(f'{n}번 학생의 점수는 {s}입니다.')
    print(f'결과는 {result}입니다.')
    print()
  • for s in score:: score 리스트에 있는 점수를 처음부터 하나씩 꺼내어 변수 s에 저장하면서 반복 실행합니다. 총 5번 반복되겠죠?
    • 첫 번째 반복에서는 s에 85가, 두 번째에는 95가 들어가는 식입니다.
  • n = n + 1: 반복문이 한 번 실행될 때마다 학생 번호 n을 1씩 증가시킵니다. (1번 학생, 2번 학생, ...)
  • if, elif, else 조건문: 변수 s에 저장된 점수를 가지고 조건을 검사합니다.
    • if s >= 90:: 점수(s)가 90점 이상이면 result 변수에 'Level1'을 저장합니다.
    • elif s >= 80:: 90점 이상은 아니지만 80점 이상이면 'Level2'를 저장합니다.
    • elif s >= 70:: 80점 이상은 아니지만 70점 이상이면 'Level3'를 저장합니다.
    • else:: 위의 모든 조건에 해당하지 않으면 (즉, 70점 미만이면) 'FAIL'을 저장합니다.
  • print(f'...'): f-string을 사용하여 각 학생의 번호(n), 점수(s), 그리고 판정 결과(result)를 형식에 맞춰 출력합니다.
  • print(): 학생별 결과 사이에 한 줄을 비워 가독성을 높여줍니다.

실행 흐름 요약

  1. 시작: 점수 리스트 [85, 95, 70, 50, 100]를 설정하고 제목을 출력합니다.
  2. 첫 번째 학생 (85점):
    • n은 1이 됩니다.
    • 점수 85는 s >= 80 조건에 해당하므로 result는 'Level2'가 됩니다.
    • "1번 학생의 점수는 85입니다. 결과는 Level2입니다."를 출력합니다.
  3. 두 번째 학생 (95점):
    • n은 2가 됩니다.
    • 점수 95는 s >= 90 조건에 해당하므로 result는 'Level1'이 됩니다.
    • "2번 학생의 점수는 95입니다. 결과는 Level1입니다."를 출력합니다.
  4. 세 번째 학생 (70점):
    • n은 3이 됩니다.
    • 점수 70은 s >= 70 조건에 해당하므로 result는 'Level3'이 됩니다.
    • "3번 학생의 점수는 70입니다. 결과는 Level3입니다."를 출력합니다.
  5. 네 번째 학생 (50점):
    • n은 4가 됩니다.
    • 점수 50은 위의 어떤 조건에도 맞지 않으므로 else에 따라 result는 'FAIL'이 됩니다.
    • "4번 학생의 점수는 50입니다. 결과는 FAIL입니다."를 출력합니다.
  6. 다섯 번째 학생 (100점):
    • n은 5가 됩니다.
    • 점수 100은 s >= 90 조건에 해당하므로 result는 'Level1'이 됩니다.
    • "5번 학생의 점수는 100입니다. 결과는 Level1입니다."를 출력합니다.
  7. 종료: score 리스트의 모든 점수를 처리했으므로 프로그램이 끝납니다.

이처럼 코드는 리스트의 각 항목을 순회하면서 조건에 따라 다른 값을 할당하고, 그 결과를 형식에 맞춰 출력하는 방식으로 동작합니다.

 

질문)

들여쓰기 관련

 

print 문이 for 문의 영향을 받아 반복적으로 실행되게 하려면 반드시 for문 안쪽으로 들여쓰기를 해야 합니다.

파이썬에서는 들여쓰기(indentation)가 코드의 구조를 결정하는 매우 중요한 문법입니다. 들여쓰기를 통해 어떤 코드가 다른 코드에 속해 있는지(종속되어 있는지)를 구분합니다.


들여쓰기에 따른 차이점

1. print문이 for문 안쪽에 있을 때 (들여쓰기 적용 O)

for문 바로 아래 줄부터 들여쓰기가 된 코드들은 for문의 코드 블록으로 취급됩니다. 이 코드 블록은 for문이 반복될 때마다 실행됩니다.

Python
 
# for문 안쪽으로 들여쓰기 된 경우
print("--- 반복 시작 ---")
for i in range(3):
    print(f"{i+1}번째 반복입니다.") # 이 부분은 for문의 영향을 받음
print("--- 반복 끝 ---")

결과)

--- 반복 시작 ---
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
--- 반복 끝 ---

위 예시처럼 print(f"{i+1}번째 반복입니다.")는 for문 안에 속해 있으므로, for문이 3번 반복하는 동안 매번 실행됩니다.


2. print문이 for문 바깥쪽에 있을 때 (들여쓰기 적용 X)

들여쓰기가 for문과 동일한 수준이거나 더 앞서 있다면, 그 코드는 for문의 영향을 받지 않는 별개의 코드로 인식됩니다. for문이 끝난 후에야 실행됩니다.

Python
 
# for문과 같은 레벨로 작성된 경우
print("--- 반복 시작 ---")
for i in range(3):
    # for문 안에는 아무 동작도 없음 (pass)
    pass
print("반복이 모두 끝났습니다.") # 이 부분은 for문의 영향을 받지 않음

결과)

--- 반복 시작 ---
반복이 모두 끝났습니다.

이 경우, print("반복이 모두 끝났습니다.")는 for문의 반복이 모두 완료된 후 단 한 번만 실행됩니다.

결론적으로, 특정 코드를 반복 실행하고 싶다면 그 코드를 반드시 for문 아래에 들여쓰기하여 for문의 영향력 안에 포함시켜야 합니다. 🧐

반응형