여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. Python - 변수 출력

Python – 변수 출력

2주전 작성

Python 변수 출력

Python에서 변수의 값을 화면에 출력하는 것은 프로그래밍의 기본이다. print() 함수를 사용하여 변수를 출력할 수 있으며, 다양한 방법으로 변수들을 결합하고 포맷팅하여 출력할 수 있다.

기본 변수 출력

Python의 print() 함수는 변수 값을 화면에 출력하는 가장 기본적인 방법이다.

단일 변수 출력

x = "Python is awesome"
print(x)

실행 결과는 다음과 같다.

Python is awesome

다양한 데이터 타입 출력

name = "홍길동"
age = 25
height = 175.5
is_student = True
print(name)
print(age)
print(height)
print(is_student)

실행 결과는 다음과 같다.

홍길동
25
175.5
True

여러 변수 동시 출력

print() 함수에 여러 변수를 쉼표로 구분하여 전달하면 한 번에 출력할 수 있다.

쉼표를 사용한 출력

x = "Python"
y = "is"
z = "awesome"
print(x, y, z)

실행 결과는 다음과 같다.

Python is awesome

다양한 데이터 타입 혼합 출력

name = "홍길동"
age = 25
city = "서울"
print("이름:", name, "나이:", age, "거주지:", city)

실행 결과는 다음과 같다.

이름: 홍길동 나이: 25 거주지: 서울

+ 연산자를 사용한 출력

+ 연산자를 사용하여 문자열을 연결한 후 출력할 수 있다.

문자열 연결 출력

x = "Python "
y = "is "
z = "awesome"
print(x + y + z)

실행 결과는 다음과 같다.

Python is awesome

숫자와 문자열 결합

숫자를 문자열과 결합하려면 먼저 문자열로 변환해야 한다.

age = 25
name = "홍길동"
# 오류 발생: print("나이: " + age)
print("나이: " + str(age))
print(name + "의 나이는 " + str(age) + "세입니다")

실행 결과는 다음과 같다.

나이: 25
홍길동의 나이는 25세입니다

💡 + 연산자 사용 시 주의사항:
• 문자열과 숫자를 직접 연결할 수 없다
• str() 함수로 숫자를 문자열로 변환해야 한다
• 쉼표 사용이 더 간편하고 안전하다
• 타입 오류를 피하려면 f-string을 권장한다

print() 함수의 매개변수

print() 함수는 출력 형식을 제어할 수 있는 다양한 매개변수를 제공한다.

sep 매개변수 (구분자)

sep 매개변수를 사용하여 값들 사이의 구분자를 지정할 수 있다.

print("사과", "바나나", "체리")
print("사과", "바나나", "체리", sep=", ")
print("사과", "바나나", "체리", sep=" - ")
print("사과", "바나나", "체리", sep="")
print("2024", "03", "15", sep="/")

실행 결과는 다음과 같다.

[code lang="python"]사과 바나나 체리
사과, 바나나, 체리
사과 - 바나나 - 체리
사과바나나체리
2024/03/15

end 매개변수 (끝 문자)

end 매개변수를 사용하여 출력 끝에 추가할 문자를 지정할 수 있다.

print("안녕하세요", end="")
print("반갑습니다")
print("첫 번째 줄", end=" | ")
print("두 번째 줄")
print("로딩", end="")
for i in range(5):
print(".", end="")
print(" 완료!")

실행 결과는 다음과 같다.

[code lang="python"]안녕하세요반갑습니다
첫 번째 줄 | 두 번째 줄
로딩..... 완료!

flush 매개변수

flush 매개변수를 True로 설정하면 출력을 즉시 화면에 표시한다.

import time
print("처리 중", end="")
for i in range(5):
time.sleep(1)
print(".", end="", flush=True)
print(" 완료!")

문자열 포맷팅

문자열 포맷팅을 사용하면 변수를 더 깔끔하게 출력할 수 있다.

format() 메서드

name = "홍길동"
age = 25
city = "서울"
message = "안녕하세요! 저는 {}이고, {}세이며, {}에 살고 있습니다."
print(message.format(name, age, city))
# 인덱스 지정
message2 = "이름: {0}, 나이: {1}, 도시: {2}"
print(message2.format(name, age, city))
# 키워드 인수 사용
message3 = "이름: {name}, 나이: {age}, 도시: {city}"
print(message3.format(name=name, age=age, city=city))

% 포맷팅 (구식 방법)

name = "홍길동"
age = 25
score = 95.5
print("이름: %s, 나이: %d세" % (name, age))
print("점수: %.1f점" % score)
print("%s님의 점수는 %.2f점입니다." % (name, score))

f-string (권장 방법)

Python 3.6부터 도입된 f-string은 가장 현대적이고 효율적인 문자열 포맷팅 방법이다.

기본 f-string 사용

name = "홍길동"
age = 25
city = "서울"
print(f"안녕하세요! 저는 {name}이고, {age}세이며, {city}에 살고 있습니다.")
print(f"내년에는 {age + 1}세가 됩니다.")

f-string 표현식

x = 10
y = 20
print(f"x = {x}, y = {y}")
print(f"x + y = {x + y}")
print(f"x * y = {x * y}")
print(f"x > y는 {x > y}입니다")
# 함수 호출
name = "python"
print(f"대문자: {name.upper()}")
print(f"길이: {len(name)}")

f-string 포맷 지정

pi = 3.14159265359
price = 15000
print(f"원주율: {pi:.2f}")
print(f"가격: {price:,}원")
print(f"가격: {price:>10,}원") # 오른쪽 정렬
print(f"가격: {price:<10,}원") # 왼쪽 정렬 print(f"가격: {price:^15,}원") # 가운데 정렬 # 진법 변환 number = 255 print(f"10진수: {number}") print(f"2진수: {number:b}") print(f"8진수: {number:o}") print(f"16진수: {number:x}") print(f"16진수(대문자): {number:X}")

복잡한 출력 예제

실제 프로그램에서 사용되는 복잡한 출력 형식들을 살펴보자.

표 형태 출력

students = [
("홍길동", 85, 90, 88),
("김철수", 92, 87, 95),
("이영희", 78, 94, 89)
]
print("=" * 40)
print(f"{'이름':^8} {'국어':^6} {'영어':^6} {'수학':^6} {'평균':^6}")
print("=" * 40)
for name, korean, english, math in students:
average = (korean + english + math) / 3
print(f"{name:^8} {korean:^6} {english:^6} {math:^6} {average:^6.1f}")
print("=" * 40)

진행률 표시

import time
def show_progress(current, total):
percentage = (current / total) * 100
bar_length = 30
filled_length = int(bar_length * current // total)
bar = "█" * filled_length + "-" * (bar_length - filled_length)
print(f"\r진행률: |{bar}| {percentage:.1f}% ({current}/{total})", end="", flush=True)
# 진행률 시뮬레이션
total_tasks = 50
for i in range(total_tasks + 1):
show_progress(i, total_tasks)
time.sleep(0.1)
print("\n작업 완료!")

로그 형식 출력

from datetime import datetime
def log_message(level, message):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{timestamp}] [{level:^5}] {message}")
# 로그 예제
log_message("INFO", "프로그램이 시작되었습니다")
log_message("DEBUG", "변수 x = 10으로 초기화")
log_message("WARN", "메모리 사용량이 높습니다")
log_message("ERROR", "파일을 찾을 수 없습니다")

조건부 출력

조건에 따라 다른 내용을 출력하는 방법들이다.

조건부 메시지

score = 85
grade = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "F"
print(f"점수: {score}점, 등급: {grade}")
# 상태에 따른 출력
is_logged_in = True
user_name = "홍길동"
print(f"상태: {'로그인됨' if is_logged_in else '로그아웃됨'}")
if is_logged_in:
print(f"환영합니다, {user_name}님!")
else:
print("로그인이 필요합니다.")

리스트 요소 출력

fruits = ["사과", "바나나", "체리", "포도"]
# 기본 출력
print("과일 목록:", fruits)
# 각 요소를 개별적으로 출력
print("과일들:")
for i, fruit in enumerate(fruits, 1):
print(f" {i}. {fruit}")
# 한 줄로 연결하여 출력
print("과일: " + ", ".join(fruits))
print(f"총 {len(fruits)}개의 과일이 있습니다")

에러 처리와 출력

에러 상황에서의 출력 처리 방법이다.

def safe_divide(a, b):
try:
result = a / b
print(f"{a} ÷ {b} = {result}")
return result
except ZeroDivisionError:
print(f"오류: 0으로 나눌 수 없습니다 ({a} ÷ {b})")
return None
except TypeError:
print(f"오류: 잘못된 데이터 타입입니다 ({type(a)}, {type(b)})")
return None
# 테스트
safe_divide(10, 2)
safe_divide(10, 0)
safe_divide("10", 2)

파일로 출력

print() 함수의 file 매개변수를 사용하여 파일로 출력할 수 있다.

# 파일로 출력
with open("output.txt", "w", encoding="utf-8") as f:
print("파일에 저장되는 내용입니다", file=f)
print(f"현재 시간: {datetime.now()}", file=f)

data = {"이름": "홍길동", "나이": 25}
for key, value in data.items():
print(f"{key}: {value}", file=f)
print("파일 저장 완료!")

💡 변수 출력 모범 사례:
• f-string을 우선적으로 사용하자 (Python 3.6+)
• 의미 있는 출력 메시지를 작성하자
• 적절한 포맷팅으로 가독성을 높이자
• 디버깅용 출력과 사용자용 출력을 구분하자
• 성능이 중요한 경우 불필요한 출력을 피하자

디버깅을 위한 출력

개발 과정에서 유용한 디버깅 출력 기법들이다.

변수 상태 출력

def debug_print(var_name, var_value):
print(f"DEBUG: {var_name} = {var_value} (type: {type(var_value).__name__})")
# 사용 예제
x = 10
y = "hello"
z = [1, 2, 3]
debug_print("x", x)
debug_print("y", y)
debug_print("z", z)

함수 실행 추적

def trace_function(func_name, *args, **kwargs):
print(f"TRACE: {func_name}() 호출됨")
if args:
print(f" 인수: {args}")
if kwargs:
print(f" 키워드 인수: {kwargs}")
# 사용 예제
def calculate(a, b, operation="add"):
trace_function("calculate", a, b, operation=operation)
if operation == "add":
result = a + b
else:
result = a - b
print(f" 결과: {result}")
return result
calculate(10, 5)
calculate(10, 5, operation="subtract")

Python의 다양한 출력 방법을 익히면 프로그램의 결과를 효과적으로 표시하고 디버깅할 수 있다. 특히 f-string을 활용하면 간결하고 읽기 쉬운 출력 코드를 작성할 수 있다.

참고
Mingg`s Diary
밍구
공부 목적 블로그