지난 수업 마지막에 미니 팀프로젝트로 진행했던 키오스크에 대해서 발표하는 줄 알고 긴장하고 있었는데 오늘 안하고 진도를 더 나간 후 해당 프로젝트를 좀 더 완성형으로 만든 이후에 발표를 진행한다고 하셔서 긴장이 풀렸다.
튜플(Tuple)은 한 번 생성하면 값을 변경할 수 없는 불변형(Immutable) 자료형이다. 요소를 추가하거나 삭제할 수 없다. 리스트와 비슷하지만 리스트보다 속도가 빠르고 메모리 사용량도 더 적게 차지한다.
집합(Set)은 중복을 허용하지 않는 자료형이다. 순서가 없고, 집합 연산이 가능하다.
< 복합 자료형 >
| 항목 | 리스트 [] | 딕셔너리 {} | 튜플 () | 집합 set() |
|---|---|---|---|---|
| 변경 가능성 | ✅ mutable | ✅ mutable | ❌ immutable | ✅ mutable (내용만) |
| 구분 기호 | [] | {key: value} | () | {값, 값} 또는 set() |
| 순서 | ✅ 있음 | ✅ 있음 (3.7 이후) | ✅ 있음 | ❌ 없음 (정렬 안 됨) |
| 중복 허용 | ✅ 허용 | ❌ 키 중복 불가 | ✅ 허용 | ❌ 허용 안 함 |
| 인덱싱/슬라이싱 | ✅ 가능 | ❌ 키로 접근 | ✅ 가능 | ❌ 불가능 |
| 주요 용도 | 순차적 자료 보관 | 키-값 쌍 저장 | 고정된 값 묶음 | 집합 연산, 중복 제거 |
이후 복합자료형 연습문제를 주셔서 풀어보았다. 마지막 문제가 헷갈렸는데 튜플 값을 못 바꾸는 점을 해당 튜플을 리스트로 저장 후 리스트에서 변경 후 다시 튜플로 지정해줄 수 있었다.
복합자료형 이후 내용은 조건문에 대한 내용이다. if문의 구조와 순서를 배우고 세 가지 이상 조건 분기가 필요하면 elif 키워드를 쓰고, 한 줄로 나타내는 조건부 표현식도 배웠다.

조건문과 함께 사용되는 제어 키워드로 break와 continue에 대해서도 배우고 간단한 코드도 작성해보았다.
조건문 이후 내용은 반복문에 대한 내용이다. for 반복문을 사용하여 구구단 코드를 작성해보았다.

코드를 실행하면 2단부터 9단까지 쭉 나온다. 오늘 수업은 여기까지고 모레엔 while 반복문부터 배울 예정이다.
예전에 코딩했을 때 나는 조건문이나 반복문이 길어져도 그냥 길게 쓰곤 했다. 줄여서 코드가 짧아지면 가독성은 높아지지만 내가 이해하는 데 좀 오래 걸렸다. 그래서 그냥 코드가 길어지더라도 줄이지 않고 길게 작성했는데 확실히 가독성 좋게 줄여 쓰는 게 나을 것 같다. 코드가 너무 길어지면 보기도 안 좋고 팀으로 코딩할 땐 비효율적이라고 생각이 들었다. 따라서 앞으로는 더 좋은 코드를 위해 코드를 줄이고 정리하는 연습이 필요하다고 느꼈다. (((4주차 맨 마지막에 쓸까?)전반적으로 파이썬 수업은 따라가기에 속도가 빠르거나 느리지도 않고 딱 적당한 것 같다. 그리고 주피터노트북으로 계속 코딩을 하다 보니 github에 클론 하는 습관을 들일 수 있었다. 아쉬운 점은 ‘초보자를 위한 파이썬 300제’와 같이 직접 코딩하는 연습이 필요하다고 느끼는데 막상 연습할 시간이 조금은 부족하다고 생각이 들어서 연습할 시간이 조금 주어졌으면 좋겠다. ))
저번 수업에 조건문과 반복문에 대해 배우고 오늘은 조건문, 반복문 연습문제를 풀어보는 것으로 시작되었다. 강사님께서 14문제를 주시고 스스로 연습해보고 강사님과 같이 답을 맞혀 가는데 나는 for 반복문으로 구현한 부분을 강사님께서는 while로 구현하신 걸 보고 역시 코딩은 풀이와 답을 외우는 것이 아니라 사용자가 편한 대로 작성해나가는 게 매력인 것 같다.

연습문제 중 파이썬에서 URL 주소 가져오는 것을 해보았는데 이거는 나중에 pandas와 numpy에 대해 배울 때 또 써먹을 것 같다.
연습문제를 다 푼 이후에는 내포(comprehension)에 대하여 배웠다.
내포(comprehension)는 반복문과 조건문을 더 간단하고 효율적으로 작성할 수 있는 문법이다. 리스트, 딕셔너리, 집합 등의 자료구조를 생성할 때 사용되며, 기존의 for문과 if문을 한 줄로 축약할 수 있으며 코드의 가독성과 간결성을 높일 수 있다.
나는 내포 개념을 처음 접해봐서 생소했다. 강사님과 함께 연습할 때는 리스트 comprehension만 했었는데 딕셔너리와 집합 comprehension도 내일 오자마자 연습해 볼 예정이다.
오후에는 저번 주에 미니 팀프로젝트로 했었던 키오스크 프로그램 만드는 활동을 했다. 'x'를 입력하면 화면 돌아가도록 하는 코드와 사용자의 포인트가 누적이 되도록 하는 코드를 추가하였다. 또, 보기 좋게 문장 줄도 다 맞춰주고, time.sleep() 함수를 넣어 천천히 뜨도록 하였다.

해당 사진이 오늘 완성한 우리 팀의 키오스크 프로그램이다. 확실히 저번보다 기능도 좋아진 것 같고 가독성도 편해졌다. 아마 나중에 또 여기서 더 업그레이드를 진행할 것 같은데 (머리는 좀 터질 것 같지만..😂) 기능이 얼마나 더 좋아질 지 기대되긴 한다.
팀 빌딩으로 키오스크 프로그램 만드는 게 생각보다 많이 어려운 것 같다. 한 명이 코딩 한 줄만 추가해도 모든 팀원에게 다 설명해 줘야 하고 이해해야 하는 게 조금 어렵기도 했고 배웠던 개념들을 응용해야 하는 것도 어려웠다. 어렵지만.. 협업하며 역량을 키울 수 있는 과정이라고 생각하고, 더 완성도 높은 결과를 내고 싶다는 욕심도 든다. 오늘은 전반적으로 저번 수업에 비해 연습문제도 주셨고 연습할 시간을 충분히 주셔서 만족스러웠다.
오늘은 오전에 오자마자 내포 연습문제들을 직접 코딩해보는 것으로(혼자) 수업을 시작하였다. 이후 진도는 Iterator와 Generator 그리고 함수에 대하여 배웠다.
Iterator는 하나씩 값을 꺼낼 수 있는 객체이고 Generator는 Iterator를 쉽게 만들 수 있는 방식이다. 코드 길이가 짧아져서 가독성이 높아진다는 장점이 있다.

선택된 코드를 실행할 때마다 h e l l o가 순차적으로 출력되고 더이상 꺼낼 값이 없으면 StopIteration 예외가 발생한다.
함수는 특정 작업을 수행하는 코드 블록이다. 파이썬에서는 def 키워드를 사용하여 함수를 정의한다.
- 내장 함수(빌트인 함수) : 파이썬 프로그램에 기본적으로 내장된 함수. import 불필요
- 외장 함수 : 내장함수가 아닌 모듈/패키지 함수. import 필요
- 사용자 지정 함수 : 사용자가 만든 함수. def 함수명():
강사님께서 학생들 성적 리스트를 주고 각각 다섯 함수로 정의하고 호출해보는 코드를 작성하라고 하셔서 해보았다.


위는 내가 작성해본 코드이고 아래는 강사님께서 작성하신 코드이다.

큰 차이점이라면 print_class(stus) 부분에서 각자 과목 평균을 다 더해서 나누는 부분만 조금 다르고 나머지는 비슷하고 결과로 같게 나왔다. 도움 없이 내가 직접 짠 코드도 잘 돌아가고 결과가 제대로 나와서 뿌듯함을 느꼈다. 함수 부분은 Comprehension보다는 익숙하기도 하고 한 번 이해되기 시작하니 크게 어려움을 느끼지는 않았다. 이제 함수를 배웠으니 후에는 팀별로 모여 키오스크 프로그램 작업 리팩토링을 위해 각자 함수를 분담하여 주말 동안 숙제로 정의하기로 하였다.
전반적으로 파이썬 수업은 따라가기에 속도가 빠르거나 느리지도 않고 딱 적당한 것 같다. 그리고 주피터노트북으로 계속 코딩을 하다 보니 github에 클론 하는 습관을 들일 수 있었다. 아쉬운 점이 있다면 초반에 코딩하는 연습이 필요하다고 느꼈는데 막상 연습할 시간이 부족하다는 생각이 들었고 회고에 이를 적었더니 강사님께서 반영해 주셔서 후에는 연습을 충분히 해볼 수 있어 좋았다. 팀원들과 함께 미니 프로젝트를 해나가며 서로 배운 내용을 공유하는 과정도 의미 있었고 다음 주 수요일쯤이면 완성될 것 같다. 🤗