대부분의 프로그램은 사용자로부터 값을 입력받고, 그 입력값에 따라 결과를 출력한다.
예를 들어 게시판에서 글을 작성하고 확인 버튼을 누르는 것도 하나의 입출력 과정이라고 볼 수 있다.
사용자 입력
↓
프로그램
↓
결과 출력
파이썬에서는 대표적으로
input()
을 사용하여 입력받고,
print()
를 사용하여 결과를 출력한다.
1. 사용자 입력 활용하기
2. 입력값을 숫자로 변환하기
3. print 자세히 알기
4. 간단한 계산기 만들기
프로그램에서 사용자가 직접 값을 입력하도록 하고 싶을 때는
input()
함수를 사용한다.
다음과 같이 작성해 보자.
a = input()
프로그램은 사용자가 값을 입력할 때까지 기다린다.
예를 들어
Python is fun
이라고 입력하면 변수 a에는
"Python is fun"
이라는 값이 저장된다.
a = input()
print(a)
실행 예시
Python is fun
Python is fun
input()으로 입력받은 값은 항상 문자열(str)로 저장된다.
예를 들어
number = input()
실행 후
3
을 입력했다고 하자.
눈으로 보면 숫자 3처럼 보이지만 실제로는
"3"
이라는 문자열이다.
확인해 보면
print(type(number))
결과
<class 'str'>
가 나온다.
즉,
사용자 입력 : 3
↓
input()
↓
"3"
↓
str
이다.
⭐
input()의 결과는 항상 문자열이다.
단순히
input()
만 사용하면 사용자는 어떤 값을 입력해야 하는지 알기 어렵다.
따라서 보통 입력 안내 문구를 함께 작성한다.
input("안내 문구")
예를 들어
name = input("이름을 입력하세요: ")
실행하면
이름을 입력하세요:
가 화면에 나타난다.
사용자가
pingu
라고 입력하면
name = "pingu"
가 된다.
전체 예제
name = input("이름을 입력하세요: ")
print(name)
실행 결과
이름을 입력하세요: pingu
pingu
앞에서 살펴본 것처럼 input()으로 받은 값은 모두 문자열이다.
따라서 다음 코드를 살펴보자.
a = input("첫 번째 숫자: ")
b = input("두 번째 숫자: ")
print(a + b)
사용자가
3
4
를 입력했다면 결과는 어떻게 될까?
34
가 출력된다.
왜냐하면 실제 변수에는
a = "3"
b = "4"
가 저장되어 있기 때문이다.
따라서
a + b
는 실제로
"3" + "4"
가 되어
"34"
가 된다.
입력받은 문자열을 숫자로 변환해야 한다.
정수라면
int()
실수라면
float()
를 사용한다.
예를 들어 나이를 입력받아 1을 더하고 싶다고 해보자.
age = input("나이를 입력하세요: ")
age = int(age)
print(age + 1)
입력
25
결과
26
과정을 보면
input()
↓
"25"
문자열
↓
int("25")
↓
25
정수
가 된다.
int()는 값을 정수형(int)으로 변환한다.
a = int("10")
그러면
a
에는
10
이라는 정수가 저장된다.
확인
print(type(a))
결과
<class 'int'>
소수점이 포함된 값을 입력받으려면 float()를 사용할 수 있다.
height = input("키를 입력하세요: ")
height = float(height)
print(height)
입력
175.5
그러면
height
는
175.5
라는 실수가 된다.
자료형을 확인하면
print(type(height))
결과
<class 'float'>
이다.
보통 실제 코드에서는
age = input("나이를 입력하세요: ")
age = int(age)
보다 다음처럼 한 줄로 많이 작성한다.
age = int(input("나이를 입력하세요: "))
처리 순서는 안쪽부터 바깥쪽이다.
int(input("나이를 입력하세요: "))
└──────────┬───────────┘
① 먼저 실행
② int() 실행
예를 들어 사용자가
25
를 입력하면
input()
결과
"25"
가 나오고
int("25")
가 실행되어
25
가 된다.
따라서
age = int(input("나이를 입력하세요: "))
는 최종적으로
age = 25
가 된다.
height = float(input("키를 입력하세요: "))
사용자가
175.5
를 입력하면
"175.5"
가 먼저 만들어지고,
float("175.5")
로 변환되어
175.5
가 저장된다.
input()
입력값 → 문자열(str)
int(input())
입력값 → 문자열 → 정수(int)
float(input())
입력값 → 문자열 → 실수(float)
print()는 값을 화면에 출력할 때 사용하는 함수이다.
지금까지 가장 많이 사용했던 함수 중 하나이다.
a = 123
print(a)
결과
123
문자열도 출력할 수 있다.
a = "Python"
print(a)
결과
Python
리스트도 가능하다.
a = [1, 2, 3]
print(a)
결과
[1, 2, 3]
파이썬에서는 문자열 리터럴을 바로 이어서 작성하면 하나의 문자열처럼 처리된다.
print("Python" "is" "fun")
결과
Pythonisfun
다음과 같은 의미이다.
print("Python" + "is" + "fun")
결과 역시
Pythonisfun
이다.
즉,
"Python" "is"
는 문자열 리터럴끼리라면
"Python" + "is"
와 비슷하게 이어진다.
다음처럼 변수 두 개를 붙여 쓰는 것은 불가능하다.
a = "Python"
b = "Study"
print(a b)
오류가 발생한다.
변수를 연결하려면
print(a + b)
처럼 +를 사용해야 한다.
print() 안에 여러 값을 쉼표(,)로 구분해서 넣을 수도 있다.
print("Python", "is", "fun")
결과
Python is fun
쉼표를 사용하면 값 사이에 공백이 자동으로 들어간다.
비교해보면
print("Python" + "is" + "fun")
결과
Pythonisfun
반면
print("Python", "is", "fun")
결과
Python is fun
이다.
그렇다면 왜 쉼표로 출력하면 공백이 자동으로 들어갈까?
print()에는
sep
라는 매개변수가 있기 때문이다.
sep는 출력할 값 사이에 어떤 문자를 넣을지 지정한다.
기본값은 공백이다.
즉,
print("Python", "is", "fun")
는 사실상
print("Python", "is", "fun", sep=" ")
과 같은 의미이다.
예를 들어 날짜를 출력한다고 해보자.
print("2026", "09", "19", sep="-")
결과
2026-09-19
sep를 /로 바꾸면
print("2026", "09", "19", sep="/")
결과
2026/09/19
이 된다.
print("Python", "Java", "C", sep=" | ")
결과
Python | Java | C
즉,
sep = separator
구분자
라고 생각하면 쉽다.
print("A", "B", "C", sep="-")
A-B-C
즉,
A + sep + B + sep + C
라고 생각할 수 있다.
기본적으로 print()를 실행하면 출력 후 자동으로 줄이 바뀐다.
print("Python")
print("Java")
print("C")
결과
Python
Java
C
왜냐하면 print()의 end 기본값이
"\n"
이기 때문이다.
\n은 줄바꿈 문자이다.
즉,
print("Python")
은 개념적으로
print("Python", end="\n")
과 같다.
다음처럼 작성하면
print("Python", end=" ")
print("Java", end=" ")
print("C")
결과
Python Java C
가 된다.
첫 번째와 두 번째 출력의 끝에 줄바꿈 대신 공백을 넣었기 때문이다.
for i in range(10):
print(i, end=" ")
결과
0 1 2 3 4 5 6 7 8 9
만약 end를 사용하지 않는다면
for i in range(10):
print(i)
결과는
0
1
2
3
4
5
6
7
8
9
처럼 한 줄씩 출력된다.
둘은 매우 자주 사용되므로 확실하게 구분해 두자.
| 매개변수 | 역할 | 기본값 |
|---|---|---|
sep | 출력 값 사이를 구분 | 공백 " " |
end | 출력문의 마지막을 지정 | 줄바꿈 "\n" |
예를 들어
print("A", "B", "C", sep="-", end="!")
결과
A-B-C!
이다.
구조로 보면
A - B - C !
↑ ↑ ↑
sep sep end
이다.
지금까지 배운
input()
과
print()
를 이용하면 간단한 계산기를 만들 수 있다.
print("=== 간단한 계산기 ===")
num1 = float(input("첫 번째 숫자를 입력하세요: "))
num2 = float(input("두 번째 숫자를 입력하세요: "))
print(f"{num1} + {num2} = {num1 + num2}")
print(f"{num1} - {num2} = {num1 - num2}")
print(f"{num1} * {num2} = {num1 * num2}")
if num2 != 0:
print(f"{num1} / {num2} = {num1 / num2}")
else:
print("0으로 나눌 수 없습니다.")
먼저
num1 = float(input("첫 번째 숫자를 입력하세요: "))
사용자로부터 값을 입력받는다.
입력값은 문자열이므로
float()
를 이용해 실수로 변환한다.
예를 들어
10
을 입력했다면
"10"
↓
10.0
이 된다.
두 번째 숫자도 동일하다.
num2 = float(input("두 번째 숫자를 입력하세요: "))
그 다음 사칙연산 결과를 출력한다.
print(f"{num1} + {num2} = {num1 + num2}")
예를 들어
num1 = 10.0
num2 = 3.0
이라면
10.0 + 3.0 = 13.0
이 출력된다.
나눗셈에서는 한 가지 주의해야 한다.
10 / 0
과 같이 0으로 나누면 오류가 발생한다.
따라서
if num2 != 0:
을 이용하여 먼저 확인한다.
if num2 != 0:
print(num1 / num2)
else:
print("0으로 나눌 수 없습니다.")
즉,
num2가 0이 아니다
↓
나눗셈 실행
num2가 0이다
↓
나눗셈 실행 X
↓
안내 메시지 출력
의 흐름이다.
| 문법 | 설명 |
|---|---|
input() | 사용자에게 값을 입력받음 |
input("문구") | 안내 문구를 출력한 후 입력받음 |
int() | 값을 정수형으로 변환 |
float() | 값을 실수형으로 변환 |
print() | 값을 화면에 출력 |
sep | 출력 값 사이의 구분자 지정 |
end | 출력문의 마지막 문자 지정 |
\n | 줄바꿈 문자 |
a = input()
사용자가
10
을 입력해도
a = "10"
이다.
즉,
input()
↓
무조건 str
이다.
숫자로 사용하려면
a = int(input())
또는
a = float(input())
처럼 형 변환을 해야 한다.
print("A", "B", "C", sep="-", end="!")
결과
A-B-C!
여기서
sep
↓
값과 값 사이
end
↓
출력문의 마지막
이다.
쉽게 기억하면
sep = 사이
end = 끝
이라고 기억하면 된다.
name = input("이름: ")
사용자 입력 → str
age = int(input("나이: "))
사용자 입력
↓
문자열
↓
int()
↓
정수
height = float(input("키: "))
사용자 입력
↓
문자열
↓
float()
↓
실수
print("A", "B", "C", sep="-", end="!")
A-B-C!
💡 04-2에서는
input()은 문자열을 반환한다는 점과print()의sep,end사용법을 확실하게 기억해 두자. 이후 파일 입출력이나 프로그램 작성에서도 계속 사용되는 기본 개념이다.