표준 입출력 및 문자열 포맷팅

1. 표준 입력

파이썬에서 사용자로부터 입력을 받는 가장 기본적인 방법은 input() 함수를 사용하는 것이다.

input() 함수는 프로그램 실행 중 사용자의 키보드 입력을 받아들인다.

 

1.1. input() 함수의 기본 사용법

input() 함수는 프롬프트 메시지를 선택적으로 받아 사용자에게 표시할 수 있다.

 

ex)

name = input("이름을 입력하세요: ")
print(f"안녕하세요, {name}님!")

 

위 코드를 실행하면 "이름을 입력하세요: "라는 프롬프트가 표시되고, 사용자가 이름을 입력하면 그 값이 name 변수에 저장된다.

 

1.2. input() 함수의 특징

input() 함수를 통해 입력받은 값은 항상 문자열(str) 타입이다.

숫자를 입력받아도 문자열로 저장되므로, 필요에 따라 형변환을 해주어야 한다.

 

ex)

age_str = input("나이를 입력하세요: ")
print(type(age_str))  # <class 'str'>

# 숫자로 변환
age = int(age_str)
print(type(age))  # <class 'int'>

# 한 줄로 작성
height = float(input("키를 입력하세요(cm): "))
print(f"당신의 키는 {height}cm입니다.")

 

입력값을 숫자로 사용하려면 int() 또는 float() 함수를 사용하여 형변환을 해야 한다.

 

1.3. 여러 값 입력받기

공백으로 구분된 여러 값을 입력받을 때는 split() 메서드를 사용한다.

 

ex)

# 공백으로 구분된 이름들 입력받기
names = input("이름을 공백으로 구분하여 입력하세요: ").split()
print(f"입력한 이름: {names}")  # 리스트로 저장됨

# 공백으로 구분된 숫자들 입력받기
numbers = list(map(int, input("숫자들을 공백으로 구분하여 입력하세요: ").split()))
print(f"입력한 숫자들의 합: {sum(numbers)}")

# 특정 구분자로 구분된 값들 입력받기
data = input("데이터를 쉼표로 구분하여 입력하세요: ").split(',')
print(f"입력한 데이터: {data}")

 

split() 메서드는 기본적으로 공백을 구분자로 사용하지만, 인자로 다른 구분자를 지정할 수 있다.

 

2. 파이썬 표준 출력

파이썬에서 화면에 출력하는 가장 기본적인 방법은 print() 함수를 사용하는 것이다.

 

2.1. print() 함수의 매개변수

print() 함수는 다양한 옵션을 제공하는 여러 매개변수를 가지고 있다.

  • sep: 여러 항목 사이에 삽입할 구분 문자열 (기본값은 공백)
  • end: 출력 끝에 추가할 문자열 (기본값은 줄바꿈 문자 '\n')
  • file: 출력을 보낼 파일 객체 (기본값은 표준 출력 스트림)

ex)

# sep 매개변수: 항목 사이의 구분자 지정
print("사과", "바나나", "오렌지", sep=", ")  # 사과, 바나나, 오렌지

# end 매개변수: 출력 끝에 추가할 문자 지정 (기본값은 '\n')
print("Hello", end=" ")
print("World")  # Hello World

# file 매개변수: 출력 위치 지정 (기본값은 sys.stdout)
with open("output.txt", "w") as f:
    print("이 내용은 파일에 저장됩니다.", file=f)

 

2.2. 문자열 정렬과 형식 지정

문자열 메서드를 사용하여 출력 시 정렬과 형식을 지정할 수 있다.

  • ljust(): 왼쪽 정렬 (지정한 너비에 문자열을 왼쪽으로 정렬하고 남은 공간을 공백으로 채움)
  • rjust(): 오른쪽 정렬 (지정한 너비에 문자열을 오른쪽으로 정렬하고 남은 공간을 공백으로 채움)
  • center(): 가운데 정렬
  • zfill(): 지정한 너비로 문자열의 왼쪽을 0으로 채움

ex)

# ljust()
print("Python".ljust(10) + "프로그래밍")  # Python    프로그래밍

# rjust()
print("Python".rjust(10) + "프로그래밍")  #     Python프로그래밍

# center()
print("Python".center(10) + "프로그래밍")  #   Python  프로그래밍

# zfill()
print("42".zfill(5))  # 00042
print("-42".zfill(5))  # -0042

 

이런 메서드들은 표 형태의 데이터나 숫자를 특정 형식으로 출력할 때 유용하다.

 

3. 문자열 포맷팅

파이썬에서는 다양한 문자열 포맷팅 방법을 제공한다.

특히 문자열의 format() 메서드는 복잡한 포맷팅 요구사항을 처리할 수 있다.

 

3.1. format() 메서드 기본

format() 메서드는 중괄호 {}를 사용하여 대체 필드를 지정하고, 이를 format()의 인자로 대체한다.

 

ex)

# 기본 사용법
print("Hello, {}!".format("Python"))  # Hello, Python!

# 위치 인덱스 사용
print("{0}, {1}, {2}".format("하나", "둘", "셋"))  # 하나, 둘, 셋
print("{2}, {1}, {0}".format("하나", "둘", "셋"))  # 셋, 둘, 하나

# 키워드 인자 사용
print("이름: {name}, 나이: {age}".format(name="무무", age=7))  # 이름: 무무, 나이: 7

 

format() 메서드는 문자열 내의 중괄호를 해당 값으로 대체한다.

 

3.2. 포맷 지정자 문법

format() 메서드는 다양한 형식 지정을 위한 포맷 지정자(format specifier)를 지원한다.

포맷 지정자의 일반적인 형식은 다음과 같다.

{인덱스:[[빈칸 채우기]정렬][기호][공간 확보][쉼표][.자릿수][자료형]}

 

3.2.1. 정렬과 빈칸 채우기 

  • <: 왼쪽 정렬
  • >: 오른쪽 정렬
  • ^: 가운데 정렬
  • 기본 빈칸 채우기는 공백이며, 다른 문자로 지정 가능

ex)

# 왼쪽 정렬 (< 사용)
print("|{:<10}|".format("Python"))  # |Python    |

# 오른쪽 정렬 (> 사용)
print("|{:>10}|".format("Python"))  # |    Python|

# 가운데 정렬 (^ 사용)
print("|{:^10}|".format("Python"))  # |  Python  |

# 빈칸 채우기 지정
print("|{:*>10}|".format("Python"))  # |****Python|
print("|{:0<10}|".format("Python"))  # |Python0000|

3.2.2. 숫자 포맷팅

  • +: 양수에도 부호 표시
  • 숫자 앞의 공간 확보: 예) {:5d}, {:05d}
  • ,: 천 단위 구분자 추가
  • .자릿수f: 소수점 이하 자릿수 지정

ex)

# 기호 표시
print("{:+}".format(42))    # +42
print("{:+}".format(-42))   # -42

# 공간 확보
print("|{:5d}|".format(42))    # |   42|
print("|{:05d}|".format(42))   # |00042|

# 쉼표 추가 (천 단위 구분자)
print("{:,}".format(1234567890))  # 1,234,567,890

# 소수점 이하 자릿수 지정
print("{:.2f}".format(3.14159))  # 3.14
print("{:.5f}".format(3.14))     # 3.14000

3.2.3. 자료형 지정

  • d: 10진수 정수
  • f: 고정 소수점 실수
  • e 또는 E: 지수 표기법
  • x 또는 X: 16진수
  • o: 8진수
  • b: 2진수
  • #: 0x, 0o, 0b와 같은 접두사 추가

ex)

# 정수 (d: decimal)
print("{:d}".format(42))  # 42

# 실수 (f: float)
print("{:f}".format(3.14159))  # 3.141590

# 지수 표기법 (e: exponent)
print("{:e}".format(1234567890))  # 1.234568e+09
print("{:.2e}".format(1234567890))  # 1.23e+09

# 16진수 (x: hex)
print("{:x}".format(255))  # ff
print("{:#x}".format(255))  # 0xff (# 접두사 추가)

# 8진수 (o: octal)
print("{:o}".format(8))  # 10
print("{:#o}".format(8))  # 0o10

# 2진수 (b: binary)
print("{:b}".format(10))  # 1010
print("{:#b}".format(10))  # 0b1010

 

 

4. 다양한 출력 형식

현대 파이썬에서는 문자열 포맷팅을 위한 여러 방법이 있다.

 

4.1. % 연산자 (오래된 방식)

C언어 스타일의 포맷팅으로, 레거시 코드에서 볼 수 있다.

 

ex)

name = "무무"
age = 7
print("이름: %s, 나이: %d" % (name, age))  # 이름: 무무, 나이: 7

 

% 연산자는 여전히 유효하지만, 새 코드에서는 더 현대적인 방식을 권장한다.

 

4.2. format() 메서드

앞서 설명한 format() 메서드는 강력하고 유연한 포맷팅을 제공한다.

 

ex)

name = "무무"
age = 7
print("이름: {}, 나이: {}".format(name, age))  # 이름: 무무, 나이: 7

 

4.3. f-문자열 (Python 3.6+)

현대 파이썬에서 가장 간결하고 직관적인 포맷팅 방법이다.

 

ex)

name = "무무"
age = 7
print(f"이름: {name}, 나이: {age}")  # 이름: 무무, 나이: 7

# f-문자열에서도 포맷 지정자 사용 가능
pi = 3.14159
print(f"파이 값: {pi:.2f}")  # 파이 값: 3.14
print(f"파이 값(가운데 정렬): {pi:^10.2f}")  # 파이 값(가운데 정렬):    3.14

 

f-문자열은 간결하고 가독성이 좋아 현대 파이썬 코드에서 많이 사용된다.

'학습 > Python' 카테고리의 다른 글

파이썬 함수  (1) 2025.05.01
파일 입출력  (0) 2025.04.30
조건문, 반복문  (1) 2025.04.25
자료구조  (0) 2025.04.19
파이썬의 특징과 철학  (0) 2025.04.18