일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 중학수학
- 개발일기
- JSP/Servlet
- 자바스크립트심화
- 중학1-1
- 혼공머신
- rnn
- 정보처리기사필기
- 자바
- 데이터분석
- 컴퓨터구조
- 컴퓨터비전
- 자바 실습
- 딥러닝
- ChatGPT
- 데이터베이스
- JDBC
- 디버깅
- 파이썬
- 자바스크립트
- html/css
- 상속
- 순환신경망
- SQL
- c언어
- 머신러닝
- JSP
- CSS
- 정보처리기사실기
- 연습문제
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
[Spring반] 중간시험 19 - 파이썬 시험 및 문제 풀이 5 : 문제 7~8번 <성적표와 구구단 출력> 본문
[Spring반] 중간시험 19 - 파이썬 시험 및 문제 풀이 5 : 문제 7~8번 <성적표와 구구단 출력>
huenuri 2024. 12. 9. 21:02저녁을 먹고 공부를 다시 시작해보려고 한다. 길어야 3시간 정도 될 것 같은데 그 시간 안에 파이썬 문제를 모두 풀고 학습을 마쳐볼 것이다.
파이썬 시험 다섯 번째
문제 7번
다음 score_list에 들어있는 데이터를 이용해 아래와 같이 성적표를 만드는 프로그램을 작성하시오. (단, 학생의 숫자가 늘어나도 동작할 수 있도록 고려)
이 문제를 풀기 위한 코드를 단계별로 작성해 보겠다.
1. 리스트와 반복문
- score_list는 2차원 리스트로 되어 있으므로, 반복문을 활용해서 각 학생의 정보를 처리해야 한다.
2. 평균 계산하기
- 학생별 점수의 평균을 계산하려면 sum()과 len()을 활용할 수 있다.
여기서 student[0]이라고 쓰는 이유는, score_list가 2차원 리스트 형태로 되어 있기 때문이다. 각 student는 리스트 내부의 하나의 리스트를 나타내고, 그 리스트의 첫 번째 요소(student[0])가 학생의 이름이다.
score_list 구조 다시 보기
score_list = [
['김미희', 89, 78, 99], # 첫 번째 학생 데이터
['서대희', 67, 88, 77], # 두 번째 학생 데이터
['강예진', 100, 55, 96], # 세 번째 학생 데이터
['차현석', 75, 100, 60] # 네 번째 학생 데이터
]
여기서
- score_list[0]는 ['김미희', 89, 78, 99] 전체를 나타낸다.
- score_list[1]는 ['서대희', 67, 88, 77] 전체를 나타낸다.
- student[0]는 각 리스트의 첫 번째 요소, 즉 학생 이름을 나타낸다.
반복문에서 student[0]의 역할
여기서
- for student in score_list는 score_list 내부의 각 리스트(['김미희', 89, 78, 99] 등)를 순서대로 student에 할당
- student[0]은 각 리스트의 첫 번째 요소, 즉 학생 이름을 가져오는 역할을 함
다른 요소에 접근하는 방식
- 점수에 접근 : student[1:]를 사용해 첫 번째 요소(이름)를 제외한 나머지 점수들을 가져올 수 있다.
3. 학점 계산하기
- 학점 계산은 점수 범위에 따라 조건문을 사용하면 된다.
4. 과목별 평균 계산하기
- 과목별 평균은 각 과목 점수를 누적해서 계산하면 된다.
print 구문의 코드가 길어서 한 문장씩 잘라보았다. 전에는 이 문자열을 나누는 방법을 몰라서 긴 문장 그대로 쓸 때가 많았는데 이제는 알 것 같다.
수정 코드
방법 1 : f-string 줄 바꿈
f-string을 사용할 때, 괄호 ()를 열어주면 여러 줄로 나눠 작성할 수 있다.
print(
f"과목별 평균: Python={subject_averages[0]:.2f}, "
f"Java={subject_averages[1]:.2f}, "
f"DB={subject_averages[2]:.2f}"
)
방법 2 : + 연산자로 문자열 연결
긴 문자열을 나눠서 연결하는 방식이다.
print(
"과목별 평균: Python=" + f"{subject_averages[0]:.2f}, "
"Java=" + f"{subject_averages[1]:.2f}, "
"DB=" + f"{subject_averages[2]:.2f}"
)
방법 3 : \(백슬래시)를 사용한 줄 바꿈
백슬래시 \를 사용하면 긴 코드나 문자열을 줄 바꿈해 작성할 수 있다.
print(f"과목별 평균: Python={subject_averages[0]:.2f}, "
f"Java={subject_averages[1]:.2f}, "
f"DB={subject_averages[2]:.2f}")
- 방법 1은 가장 깔끔하고 파이썬스러운 방식이다. 괄호를 열고 여러 줄로 나눠서 작성하면 읽기 쉽고 오류도 안 난다.
5. 테이블 형식 출력
- 출력 결과를 깔끔하게 보이게 하려면 f-string과 문자열 정렬을 활용한다.
:<의 의미
- :<n는 파이썬의 문자열 포맷팅(f-string 또는 str.format)에서 사용되는 정렬 옵션이다.
- :n은 출력할 문자열의 최소 너비를 지정하고, <는 왼쪽 정렬을 의미한다.
name = "김미희"
print(f"{name:<10}") # 최소 너비 10, 왼쪽 정렬
위 코드에서 :<6, :<7 같은 포맷팅은 데이터가 왼쪽에 맞춰지고, 최소 너비를 보장하게 한다.
이제 문제에 맞게 모든 코드를 작성해 보겠다.
이제 점수도 소수점이 아닌 정수로 되었고, 테이블의 선도 모두 잘 만들었다. 이제 다음 문제로 넘어가도 될 것 같다.
문제 8번
다음과 같이 2단부터 9단까지의 구구단을 출력하시오.
이 문제를 풀기 전에 구구단을 출력하는 기초적인 문제를 몇 개 풀어보려고 한다.
그냥 출력하는 것과 리스트로 출력하는 것은 어떤 차이가 있는지 궁금해졌다. 둘 다 구구단을 처리하지만 저장 방식과 활용도에서 큰 차이가 있다.
1. 그냥 출력
- 특징 : 계산한 결과를 즉시 화면에 출력만 함
- 장점
- 메모리를 추가로 사용하지 않음
- 단순히 결과를 화면에 보여주는 용도에 적합
- 단점
- 출력된 결과를 다시 사용할 수 없음
- 데이터가 프로그램 내에 저장되지 않음
- 용도
- 구구단 결과를 즉시 확인하거나 단순 출력할 때 사용
2. 리스트로 저장
- 특징 : 구구단의 계산 결과를 리스트에 저장하여 프로그램 내에서 재사용 가능
- 장점
- 계산 결과를 저장하므로 이후에 다시 사용할 수 있음
- 원하는 형식으로 가공하거나, 조건에 따라 특정 데이터를 추출할 수 있음
- 단점
- 메모리를 추가로 사용
- 즉각 출력이 필요하면 오히려 비효율적
- 용도
- 구구단 결과를 다른 연산이나 조건 검색에 활용할 때
- 저장된 결과를 여러 번 출력하거나 변형하고 싶을 때
비교
특징 | 그냥 출력 | 리스트로 저장 |
메모리 사용 | 적음 | 추가적인 메모리 사용 |
결과 활용도 | 화면에만 출력, 이후 재사용 불가 | 저장된 데이터를 재활용 가능 |
사용 시점 | 단순 출력이 필요할 때 | 데이터를 저장하고 반복 활용할 때 |
예시 용도 | 즉시 결과 확인 | 검색, 가공, 조건 처리 등 |
결론
- 즉시 출력이 목적이면 그냥 출력
- 데이터 저장 및 활용이 필요하면 리스트로 저장
이제 문제를 풀어보겠다. 이미 작성된 코드 안에 답이 있는 것 같다.
여기서 :2는 무엇일까? :{2}는 **문자열 포매팅(f-string)**에서 출력될 문자열의 최소 너비를 지정하는 옵션이야. 간단히 말해서, 숫자나 텍스트를 출력할 때 자릿수를 맞추기 위해 사용하는 옵션이야.
:{2}의 의미
- 2 : 최소 2칸의 공간을 확보해서 값을 출력
- 숫자가 한 자릿수면 앞쪽에 공백을 추가해서 출력이 정렬되도록 보장
:2가 없을 때
여기서 한 자릿수와 두 자릿수가 섞여 출력되므로 정렬되지 않음
정렬 효과
:2를 추가하면 정렬 효과를 볼 수 있다.
학습을 마치고
이번에도 두 문제를 풀며 많은 것들을 배웠다. 이제 딱 두 문제만이 남아있으니 마지막까지 힘을 내볼 것이다. 내일은 웹 공부를 해볼 수 있을 것 같다.
'개발 포트폴리오 > 수료증 및 시험' 카테고리의 다른 글
[Spring반] 중간시험 21 - Web 이론 시험 및 문제 풀이 1 : 문제 1~3번 <HTML> (0) | 2024.12.09 |
---|---|
[Spring반] 중간시험 20 - 파이썬 시험 및 문제 풀이 6 : 문제 9~10번 <넘파이와 판다스> (0) | 2024.12.09 |
[Spring반] 중간시험 18 - 파이썬 시험 및 문제 풀이 4 : 문제 5~6번 <별 찍기와 반복문> (0) | 2024.12.09 |
[Spring반] 중간시험 17 - 파이썬 시험 및 문제 풀이 3 : 문제 4번 <배열과 조건문, in 사용법> (0) | 2024.12.09 |
[Spring반] 중간시험 16 - 파이썬 시험 및 문제 풀이 2 : 문제 2~3번 <조건문과 배열> (0) | 2024.12.09 |