포트폴리오/[IoT 기반 피지컬 AI 교육일지]

[ 파이썬 기초 ] #2 자료형 변환, 문자열 포매팅 및 제어문 (42일차 기록)

개발자혜콩 2026. 4. 22. 10:44

1. 오늘 한 것

① 객체지향 프로그래밍(OOP) 개념 복습

Object oriented programming or OOP paradigm explanation outline diagram

 

  • 클래스(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)을 활용하여 다량의 데이터를 일괄 처리하는 로직 실습.