
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 timeprint("처리 중", 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 = 10y = 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.14159265359price = 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 timedef 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 datetimedef 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 = 85grade = "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을 활용하면 간결하고 읽기 쉬운 출력 코드를 작성할 수 있다.