1. 오늘 한 것
① 객체지향 프로그래밍(OOP) 개념 복습

- 클래스(Class) vs 객체(Object):
- 클래스: 객체를 만드는 도구(설계도).
- 객체: 상태와 기능을 가진 실체.
- 예: int speed = 100;은 단순한 변수지만, Button loginBtn = new Button();은 화면상의 위치/색상(상태)과 setOnClickListener()(기능)를 갖춘 객체다.
- 언어별 특징: Java, C#은 클래스 기반의 다소 무거운 구조를 가지지만, 파이썬은 클래스 없이도 절차지향적 코딩이 가능한 유연함을 가짐.
- 깨알 상식: 번역기 언어의 시초는 1964년 존 케메니와 토마스 커츠가 초보자 교육용으로 개발한 'BASIC'이다.
② 자료형 변환 (Type Casting) 및 input() 처리
: 파이썬의 input()은 입력값을 무조건 '문자열(String)'로 취급하므로, 숫자 연산을 위해서는 int(), float() 함수를 이용한 명시적 형변환이 필수적임. 반대로 숫자를 문자로 바꿀 때는 str()을 사용.
# 02_03_형변환.py 실습
input1 = float(input("첫번째 값: "))
input2 = float(input("두번째 값: "))
print("덧셈결과: ", input1 + input2)
print("뺄셈결과: ", input1 - input2)
a = input('첫 번째 정수를 입력하세요: ')
b = input('두 번째 정수를 입력하세요: ')
c = a + b
print("문자열형태: " + c) # 예: "10" + "20" = "1020"
d = int(a) + int(b)
print("숫자형변환: ", d) # 예: 10 + 20 = 30
③ 문자열 내장 함수 (format, isOO, split)
- format(): 변수를 문자열 템플릿에 안전하게 매핑. 자릿수 맞춤 및 0 채우기 기능 확인.
- isOO(): 문자열의 구성 상태 파악 (예: isalnum(), isalpha()).
- split(): 특정 구분자로 문자열 자르기. (추후 아두이노 DHT 센서 등 IoT 장비에서 넘어오는 CSV 텍스트 데이터를 파싱할 때 핵심적으로 쓰일 예정)
# 02_4_format_특정칸에 출력.py 실습
# 특정 칸에 출력하기 및 빈칸 0으로 채우기
output_c = "{:10d}".format(52) # 10칸 확보 후 우측 정렬
output_d = "{:05d}".format(52) # 5칸 확보 후 남은 공간 0으로 채움 (결과: 00052)
output_e = "{:05d}".format(-52) # 음수 기호도 1칸 차지 (결과: -0052)
④ 조건문(if) 및 논리 연산자 활용
- and (모두 참일 때 True), or (하나라도 참이면 True), not 연산자를 활용한 다중 조건 제어.
- datetime 모듈과 in 연산자를 결합하여 간단한 챗봇 로직 구현.
# 03_조건문 도전문제 1번.py 실습
import datetime
now = datetime.datetime.now()
string = input("입력 : ")
if string in '안녕하세요':
print("안녕하세요")
elif string == ('지금 몇 시야?' or '지금 몇 시에요?'):
print("지금은 {}시입니다.".format(now.hour))
else:
print(string)
2. 문제 / 헷갈린 점
① ValueError 예외 발생
- 상황: float(input())을 받을 때 사용자가 실수로 "A" 같은 알파벳을 입력했을 때 에러 발생 후 프로그램이 강제 종료됨.
- 해결: 숫자가 아닌 문자열을 강제로 수치형(int, float)으로 변환하려 할 때 발생하는 치명적인 예외임을 확인. 실무에서는 형변환 전에 해당 문자열이 숫자로만 이루어져 있는지 isnumeric() 등의 함수로 검증하는 예외 처리 로직이 선행되어야 함을 깨달음.
② 알고리즘의 발상 전환 (홀짝 판별 로직)
- 상황: 홀짝을 판별할 때 무조건 나머지 연산자(% 2 == 0)를 사용하는 것만이 정답이라고 생각했음.
- 해결: 파이썬의 강력한 in 연산자와 문자열 인덱싱을 활용하면, 숫자로 변환하는 과정 없이 문자열의 마지막 글자만 확인하여 홀짝을 판별할 수 있음을 배움.
# 03_홀짝예제.py (파이썬 특유의 발상이 돋보인 코드)
number1 = input("숫자를 입력해주세요: ")
last_number = number1[-1] # 문자열의 맨 마지막 글자 추출
# 계산(%) 필요 없이 문자열 비교만으로 홀짝 구별
if last_number in "02468":
print("짝수입니다.")
if last_number in "13579":
print("홀수입니다.")
3. 오늘 배운 핵심
① 입력 데이터의 본질은 문자열이다
- input()으로 들어오는 데이터는 100을 입력해도 "100"이다. 연산을 위한 int(), float() 캐스팅을 잊지 말아야 한다.
② 문자열 가공 함수가 데이터 전처리의 핵심이다
- format()으로 출력 형식을 다듬고, split()으로 날것의 센서 데이터를 배열로 쪼개는 기술이 향후 데이터 파이프라인 구축의 기초가 된다.
③ 파이썬스러운(Pythonic) 코딩
- C나 Java 스타일의 산술 연산(% 2)에 갇히지 않고, 문자열 인덱싱([-1])과 in 연산자를 활용하는 유연한 사고방식이 필요하다.
4. 다음 목표
- 여러 개의 데이터를 한 공간에 담아 관리할 수 있는 파이썬 자료형인 리스트(List)와 딕셔너리(Dictionary) 구조 학습하기.
- 배열 데이터와 궁합이 좋은 반복문(for, while)을 활용하여 다량의 데이터를 일괄 처리하는 로직 실습.
'포트폴리오 > [IoT 기반 피지컬 AI 교육일지]' 카테고리의 다른 글
| [ 파이썬 기초 ] #4 while 반복문, 리스트 내포 및 사용자 정의 함수 (44일차 기록) (0) | 2026.04.22 |
|---|---|
| [ 파이썬 기초 ] #3 리스트, 반복문(for), 딕셔너리 활용 (43일차 기록) (0) | 2026.04.22 |
| [ 파이썬 기초 ] #1 파이썬의 특징, 가상환경 및 기본 문법 (41일차 기록) (0) | 2026.04.22 |
| [ 안드로이드 미니 프로젝트 ] #3 컴포넌트 직접 구현 및 최종 회고 (40일차 기록) (0) | 2026.04.21 |
| [ 안드로이드 미니 프로젝트 ] #2 바이브코딩 기능 확장 및 AI 컨텍스트 관리 (39일차 기록) (0) | 2026.04.21 |