Topic 2: 출력과 입력 - 컴퓨터와 대화하기 💬
🎯 학습 목표
print 함수의 다양한 기능을 익히고 input 함수를 활용하여 사용자와 상호작용하는 프로그램을 만들 수 있습니다.
🔄 일방향에서 양방향으로
지금까지의 학습
Hello World에서 여러분은 컴퓨터에게 말하는 법을 배웠습니다. 하지만 이것은 일방적인 출력이었습니다.
이번 토픽에서 배울 것
이제 진정한 대화를 시작합니다. 컴퓨터가 여러분의 입력을 받고, 그에 맞는 반응을 보이는 상호작용하는 프로그램을 만들어보겠습니다.
🖨️ 출력 심화 - print
함수 완전 활용
기본 출력 복습
print("안녕하세요!")
더 다양한 출력 방법
1. 여러 값을 한 번에 출력하기
print("이름:", "김파이썬")
print("나이:", 20)
print("취미:", "코딩", "게임", "독서")
출력 결과:
이름: 김파이썬
나이: 20
취미: 코딩 게임 독서
2. 구분자(separator) 바꾸기
print("사과", "바나나", "포도") # 기본 (공백으로 구분)
print("사과", "바나나", "포도", sep=", ") # 쉼표로 구분
print("사과", "바나나", "포도", sep=" | ") # 바(|)로 구분
print("사과", "바나나", "포도", sep="") # 구분자 없음
출력 결과:
사과 바나나 포도
사과, 바나나, 포도
사과 | 바나나 | 포도
사과바나나포도
3. 줄바꿈 제어하기
print("첫 번째 줄")
print("두 번째 줄")
print("세 번째 줄", end="")
print("네 번째 줄")
출력 결과:
첫 번째 줄
두 번째 줄
세 번째 줄네 번째 줄
4. 아름다운 형태 만들기
print("=" * 30)
print(" 🐍 파이썬 학습 일기 🐍")
print("=" * 30)
print("오늘의 학습: 입출력 함수")
print("기분: 최고! 😊")
print("=" * 30)
출력 결과:
==============================
🐍 파이썬 학습 일기 🐍
==============================
오늘의 학습: 입출력 함수
기분: 최고! 😊
==============================
🎤 입력 처리 - input
함수로 사용자와 소통
기본 입력 받기
name = input("이름을 입력하세요: ")
print("안녕하세요,", name, "님!")
실행 과정:
- 프로그램이 “이름을 입력하세요: “를 출력
- 사용자가 키보드로 입력 (예: “김파이썬”)
- Enter 키를 누르면 입력 완료
- “안녕하세요, 김파이썬 님!” 출력
🔄 input() 함수의 중요한 특징
⚠️ 매우 중요:
input()
함수로 받은 모든 값은 **항상 문자열(string)**입니다!
# 사용자가 "20"을 입력했다고 가정
age = input("나이를 입력하세요: ")
print(f"입력받은 값: {age}") # "20" (문자열)
print(f"타입: {type(age)}") # <class 'str'>
# 숫자로 계산하려면 반드시 변환해야 함
age_number = int(age) # 문자열을 정수로 변환
next_year = age_number + 1 # 이제 계산 가능
print(f"내년 나이: {next_year}") # 21
📊 타입 변환 마스터하기
1. 문자열 → 정수 변환
text_number = input("숫자 입력: ") # "123" (문자열)
real_number = int(text_number) # 123 (정수)
2. 문자열 → 실수 변환
text_decimal = input("소수 입력: ") # "3.14" (문자열)
real_decimal = float(text_decimal) # 3.14 (실수)
3. 한 번에 변환하기 (권장 방법)
age = int(input("나이: ")) # 입력과 동시에 정수로 변환
height = float(input("키(cm): ")) # 입력과 동시에 실수로 변환
🚨 타입 변환 시 주의사항
# ❌ 잘못된 입력으로 인한 오류
text = "안녕하세요"
number = int(text) # ValueError! 숫자가 아닌 문자열은 변환 불가
# ❌ 소수점이 있는 문자열을 정수로 변환
decimal_text = "3.14"
integer = int(decimal_text) # ValueError! 소수점 문자열은 int()로 변환 불가
# ✅ 올바른 방법
decimal_text = "3.14"
integer = int(float(decimal_text)) # 3 (소수점 버림)
기억하세요: 사용자 입력은 예측하기 어렵습니다. 항상 올바른 형태의 입력인지 확인하는 습관을 기르세요!
다양한 입력 활용
예제 1: 개인정보 수집기
print("=" * 40)
print(" 자기소개 프로그램")
print("=" * 40)
name = input("이름: ")
age = input("나이: ")
hobby = input("취미: ")
dream = input("꿈: ")
print("\n" + "=" * 40)
print(" 입력하신 정보")
print("=" * 40)
print(f"이름: {name}")
print(f"나이: {age}세")
print(f"취미: {hobby}")
print(f"꿈: {dream}")
print("=" * 40)
print("입력해주셔서 감사합니다! 😊")
f-string
설명:f"이름: {name}"
은 문자열 안에 변수 값을 넣는 현대적인 방법입니다. 중괄호{}
안에 변수명을 쓰면 그 값이 들어갑니다.
예제 2: 간단한 계산기
print("🧮 간단한 덧셈 계산기")
print("-" * 25)
num1 = input("첫 번째 숫자: ")
num2 = input("두 번째 숫자: ")
# 문자열을 숫자로 변환
result = int(num1) + int(num2)
print(f"\n계산 결과")
print(f"{num1} + {num2} = {result}")
중요:
input()
으로 받은 값은 항상 **문자열(string)**입니다. 숫자로 계산하려면int()
나float()
으로 변환해야 합니다.
예제 3: 대화형 챗봇
print("🤖 안녕! 나는 파이봇이야!")
print("너와 대화하고 싶어!")
name = input("🤖 너의 이름이 뭐야? ")
print(f"🤖 {name}! 정말 좋은 이름이네!")
mood = input("🤖 오늘 기분은 어때? ")
print(f"🤖 {mood}구나! 나도 오늘 기분이 좋아!")
hobby = input("🤖 취미가 뭐야? ")
print(f"🤖 와! {hobby}! 정말 멋진 취미네!")
print(f"🤖 {name}, 너와 대화해서 정말 즐거웠어! 👋")
🚨 자주 발생하는 실수와 해결법
실수 1: 숫자 계산 오류
# ❌ 틀린 예
num1 = input("숫자 입력: ") # "5" (문자열)
num2 = input("숫자 입력: ") # "3" (문자열)
result = num1 + num2 # "53" (문자열 연결)
# ✅ 올바른 예
num1 = int(input("숫자 입력: ")) # 5 (정수)
num2 = int(input("숫자 입력: ")) # 3 (정수)
result = num1 + num2 # 8 (숫자 계산)
실수 2: f-string 문법 오류
# ❌ 틀린 예
name = "김파이썬"
print("안녕하세요, {name}님!") # f가 없음
# ✅ 올바른 예
name = "김파이썬"
print(f"안녕하세요, {name}님!") # f 추가
실수 3: 변수명 오타
# ❌ 틀린 예
naam = input("이름: ") # naam으로 저장
print(f"안녕, {name}!") # name으로 사용 (오타!)
# ✅ 올바른 예
name = input("이름: ") # name으로 저장
print(f"안녕, {name}!") # name으로 사용
🎮 퀴즈: 입출력 마스터 확인
Q1. 다음 코드의 출력 결과는?
print("A", "B", "C", sep="-")
- A B C
- A-B-C
- ABC
- A, B, C
💡 정답 확인
정답: 2번 (A-B-C)
sep="-"
는 각 값 사이에 -
를 넣어서 구분한다는 의미입니다.
Q2. input()
함수로 받은 값의 타입은?
age = input("나이: ")
- 정수(int)
- 실수(float)
- 문자열(string)
- 불린(boolean)
💡 정답 확인
정답: 3번 (문자열)
input()
함수는 항상 문자열을 반환합니다. 숫자로 사용하려면 int()
나 float()
으로 변환해야 합니다.
Q3. 다음 중 올바른 f-string 사용법은?
name = "파이썬"
print("안녕, name!")
print("안녕, {name}!")
print(f"안녕, {name}!")
print("안녕, " + name + "!")
💡 정답 확인
정답: 3번과 4번 둘 다 정답
3번은 f-string 방법, 4번은 문자열 연결 방법입니다. 하지만 f-string이 더 현대적이고 읽기 쉬운 방법입니다.
✅ 입출력 마스터 체크리스트
✅ 입출력 마스터 체크리스트
🌟 입출력 완전 정복
이제 여러분은 다음과 같은 능력을 갖추게 되었습니다:
- 고급 출력: 구분자, 줄바꿈 제어, 형식화된 출력
- 사용자 입력: 키보드 입력을 받아 프로그램에 활용
- 타입 변환: 문자열을 숫자로, 숫자를 문자열로 변환
- 대화형 프로그램: 사용자와 실시간으로 소통하는 프로그램 제작
🚀 다음 단계로
입출력의 기술을 익혔으니, 이제 데이터를 기억하는 방법을 배울 차례입니다! 다음 토픽에서는:
변수: 소중한 정보를 담는 상자 메모리: 컴퓨터가 기억하는 방식 이름 짓기: 변수에 의미있는 이름 부여하기
여러분의 프로그램이 일회성 출력에서 정보를 기억하고 활용하는 프로그램으로 진화하는 순간을 목격하게 될 것입니다! ✨