프로그래밍 개발 공부

[Python 학습] 1-6 프로그램이 세상과 소통하는 법: 파이썬 입출력(Input/Output) 완벽 정리 🚀

wikys 2026. 4. 20. 15:02
오늘은 파이썬의 가장 기본이 되면서도 핵심적인 '입력과 출력(I/O)'에 대해 학습했다. 지금까지는 변수와 연산자를 통해 프로그램 내부에서만 값을 다루는 법을 연습해 왔다. 하지만 실제 프로그램은 내부 계산만 하는 것이 아니라 외부 사용자로부터 데이터를 받고(Input), 이를 처리한(Process) 후, 다시 결과를 바깥으로 보여주는(Output) 구조를 가져야 비로소 동작하는 진짜 프로그램처럼 느껴진다. 입출력이 없다면 내 코드는 매번 똑같은 결과만 내놓는 고립된 상자에 불과할 것이다. 오늘 공부한 내용을 바탕으로 프로그램이 바깥세상과 어떻게 데이터를 주고받는지 정리해 보았다.
 
--------------------------------------------------------------------------------
1. 프로그램의 귀, 입력 함수 input() 👂
프로그램이 외부 데이터를 받아들이는 가장 기본적인 창구는 input() 함수다. 코드를 실행할 때 input()을 사용하면 프로그램은 잠시 멈추고 사용자의 입력을 기다린다. 단순히 값을 받는 것을 넘어, input("나이를 입력하세요: ")처럼 괄호 안에 문자열(프롬프트)을 넣어 사용자가 어떤 데이터를 입력해야 하는지 친절하게 안내할 수도 있다.
 
⚠️ 주의할 점: 모든 입력은 '문자열'이다! 가장 헷갈리기 쉽고 중요한 포인트는, input()으로 받은 데이터는 내가 숫자를 입력하든 문자를 입력하든 무조건 '문자열(str)' 형태로 저장된다는 사실이다. 따라서 나이나 상품 가격 같은 숫자를 입력받아 사칙연산을 하려면, 반드시 int()(정수)나 float()(실수) 함수를 이용해 형 변환(Type Casting) 을 해주어야 한다. 만약 문자가 섞인 값을 int()로 억지로 변환하려고 하면 ValueError라는 오류를 마주하게 되니 조심해야겠다.
 
💡 심화 학습: 한 번에 여러 값 입력받기 알고리즘 문제 풀이나 다량의 데이터를 다룰 때는 값을 여러 개 받아야 하는 경우가 많다. 이때는 입력받은 문자열을 공백 기준으로 잘라주는 split() 함수와, 각 요소에 일괄적으로 자료형을 적용해주는 map() 함수를 조합하여 a, b = map(int, input().split())과 같은 형태로 사용하는 스킬을 익혔다. 더 나아가, 대량의 데이터를 반복적으로 빠르게 입력받아야 할 때는 input() 대신 sys.stdin.readline()을 사용하는 것이 훨씬 빠르다는 꿀팁도 추가로 메모해 둔다.
 
--------------------------------------------------------------------------------
2. 프로그램의 입, 출력 함수 print() 🗣️
사용자가 데이터를 넣어주었다면, 프로그램은 처리한 결과를 print() 함수를 통해 화면에 내보낸다. 입문 단계에서 print()는 내 코드가 제대로 동작하는지, 변수에 어떤 값이 들어있는지를 눈으로 확인하게 해주는 유일한 단서이자 디버깅의 핵심 도구이기도 하다.
 
여기서 한 가지 짚고 넘어갈 오해는 print() 함수와 return의 차이다. print()는 단순히 값을 화면에 보여주는(출력하는) 기능일 뿐, 값을 함수 바깥으로 돌려주어(저장하는) 재사용하게 만드는 return과는 쓰임새와 방향이 완전히 다르다는 점을 잊지 말아야 한다.
 
🎨 print()를 입맛대로 조절하는 마법의 매개변수들 print() 함수는 콤마(,)를 사용해 여러 개의 값을 동시에 출력할 수 있다. 이때 내장된 옵션들을 활용하면 출력 형태를 다양하게 제어할 수 있었다.
  • sep (구분자) : 여러 값을 출력할 때 값들 사이에 들어갈 문자를 지정한다. print(1, 2, 3, sep="*")라고 작성하면 1*2*3이 출력된다.
  • end (끝맺음) : print()는 실행 후 기본적으로 줄바꿈(\n)을 수행하지만, end="" 옵션을 주면 자동 줄바꿈을 막고 다음 출력과 한 줄에 이어서 표시할 수 있다.
  • file : print는 화면 콘솔에만 출력하는 것이 아니라, file=파일객체 옵션을 주면 특정 텍스트 파일 등에 데이터를 바로 기록(쓰기)할 수도 있다는 놀라운 사실도 새롭게 알게 되었다.
 
--------------------------------------------------------------------------------
3. 더 깔끔한 출력을 위한 무기, f-string 포맷팅 ✨
변수와 텍스트를 섞어 출력할 때 가장 강력하고 현대적인 방식인 F-스트링(f-string)도 함께 공부했다. 문자열 앞에 f를 붙이고 중괄호 {} 안에 변수명을 직접 넣으면 되어, 과거의 .format() 방식이나 % 연산자보다 훨씬 직관적이고 코드가 짧아진다.
 
단순한 값 삽입을 넘어선 디테일한 포맷팅 트릭도 매우 유용했다.
  • 소수점 제어 : f"{value:.2f}"처럼 작성하면 복잡한 실수를 깔끔하게 소수점 둘째 자리까지만 반올림해 출력해준다.
  • 천 단위 콤마 : 금융 데이터나 큰 숫자를 다룰 때는 f"{value:,}"를 사용하면 자동으로 쉼표를 찍어 가독성을 높일 수 있다.
  • 텍스트 정렬 : f"{name:<10}"은 왼쪽 정렬, f"{age:>5}"는 오른쪽 정렬, f"{job:^15}"는 가운데 정렬을 의미하여, 터미널에서 표 형태의 텍스트를 구성할 때 아주 요긴하게 쓰일 것 같다.
  • 디버깅 : f"{variable=}" 형태로 = 기호를 붙이면 변수명과 그 값이 함께 출력되어 에러를 잡을 때 큰 도움이 된다.
 
--------------------------------------------------------------------------------
💡 오늘의 마무리 및 회고
오늘 입력과 출력이라는 통로를 제대로 배우고 나니, 단순히 컴퓨터 안에서 혼자 계산만 하던 추상적인 코드들이 사용자와 상호작용하는 현실적인 '소프트웨어'처럼 느껴지기 시작했다. 입출력은 단순한 함수 사용법이 아니라, 프로그램이 현실 세계와 연결되는 필수 구조임을 깊이 이해하게 된 뜻깊은 시간이었다.
 

 
반응형