Python 기초 문법: 문자열 포매팅, 조건 연산자 및 인코딩 이해

문자열 서식화 (String Formatting)

Python에서는 다양한 방법으로 변수를 문자열에 삽입할 수 있습니다. 대표적으로 % 연산자를 활용한 전통적인 포매팅 방식이 있습니다.

기본 사용법: %s와 %d

name = input("이름을 입력하세요: ")
age = int(input("나이를 입력하세요: "))
msg = "안녕하세요, 저는 %s이고, %d세입니다." % (name, age)
print(msg)
입력 예시:
이름을 입력하세요: 홍길동
나이를 입력하세요: 25
출력 결과:
안녕하세요, 저는 홍길동이고, 25세입니다.

여러 데이터 타입 혼합

username = input("사용자명: ")
years = input("경력 연수: ")
position = input("직무: ")
interest = input("관심 분야: ")

profile = '''--- %s의 프로필 ---
사용자명 : %s
경력     : %s년
직무     : %s
관심사   : %s
------------------''' % (username, username, years, position, interest)

print(profile)

특수 문자 출력: %%

문자 '%' 자체를 출력하려면 %%를 사용해야 합니다. 단일 %는 포매팅 시작을 의미하기 때문입니다.

progress = 15
print("현재 학습 진행률: %d%%" % progress)
출력 결과:
현재 학습 진행률: 15%

while 루프와 else 블록

Python의 while 문은 선택적으로 else 절을 가질 수 있으며, 이는 루프가 정상 종료되었을 때 실행됩니다. 단, break로 인해 종료된 경우엔 실행되지 않습니다.

# continue 사용 시 (else 실행됨)
counter = 0
while counter < 3:
    counter += 1
    if counter == 2:
        continue
    print(f"카운트: {counter}")
else:
    print("루프가 정상적으로 종료되었습니다.")

# break 사용 시 (else 미실행)
flag = False
count = 0
while count < 3:
    count += 1
    if count == 2:
        break
else:
    flag = True

if not flag:
    print("break로 인해 else 블록이 실행되지 않았습니다.")

문자 인코딩의 기초

컴퓨터는 모든 데이터를 이진수(0과 1)로 저장하고 처리합니다. 텍스트 역시 특정 규칙에 따라 숫자로 변환되어 저장되며, 이를 인코딩이라 부릅니다.

  • ASCII: 영문자, 숫자, 특수문자 등 128개 문자를 7비트로 표현. 한 문자당 1바이트 사용.
  • Unicode: 전 세계 모든 언어의 문자를 포함하기 위한 표준. 초기에는 각 문자에 2~4바이트 할당.
  • UTF-8: 유니코드의 가변 길이 인코딩 방식. ASCII 호환성 유지하며, 한글은 일반적으로 3바이트 사용.
  • GBK: 중국어 간체자를 위한 인코딩. 한자는 2바이트로 표현.

ASCII 인코딩 일부 예시

10진수16진수문자설명
650x41A대문자 A
970x61a소문자 a
480x300숫자 0
320x20(공백)스페이스
100x0A-줄바꿈(LF)
130x0D-캐리지 리턴(CR)

연산자와 논리 평가

산술 및 비교 연산자

  • 산술: +, -, *, /, // (정수 나눗셈), ** (제곱)
  • 비교: ==, !=, >, <, >=, <=
  • 할당: =, +=, -=, *=, /=, //=, %=, **=

논리 연산자와 평가 순서

논리 연산자 and, or, not은 다음과 같은 우선순위를 가집니다: 괄호() > not > and > or

# 복합 조건식 평가
result = 2 > 1 and 1 < 4 or 2 < 3 and 9 > 6 or 2 < 4 and 3 < 2
# (True and True) or (True and True) or (True and False)
# True or True or False → 최종: True
print(result)  # 출력: True

단축 평가와 피연산자 반환

Python의 andor는 불리언 값만 반환하는 것이 아니라, 실제 피연산자 값을 반환할 수 있습니다.

# 'or'의 동작 방식
print(1 or 2)    # 출력: 1 (첫 번째 참 값)
print(0 or 3)    # 출력: 3 (0은 거짓, 다음 값 반환)
print(0 or 4)    # 출력: 4

# 'and'의 동작 방식
print(1 and 2)   # 출력: 2 (모두 참이면 마지막 값 반환)
print(0 and 3)   # 출력: 0 (첫 번째 거짓 값 반환)
print(5 and 0)   # 출력: 0

숫자의 불리언 변환

모든 숫자는 bool() 함수를 통해 불리언 값으로 변환 가능합니다.

print(bool(0))    # False
print(bool(-1))   # True
print(bool(100))  # True
print(bool(0.0))  # False

실습 문제

문제 1: 민감한 키워드 필터링

사용자 입력에서 특정 민감 키워드("소녀스타일", "철망치")가 포함되었는지 확인하고, 포함되면 재입력을 요청하는 프로그램을 작성하세요.

sensitive_words = ["소녀스타일", "철망치"]

while True:
    user_input = input("내용을 입력하세요: ")
    contains_blocked = any(word in user_input for word in sensitive_words)
    
    if contains_blocked:
        print("민감한 키워드가 포함되어 있습니다. 다시 입력해 주세요.")
    else:
        print(f"입력 완료: {user_input}")
        break

문제 2: 맞춤형 재미 템플릿

사용자의 이름, 선호 장소, 취미를 입력받아 창의적인 문장을 생성하는 스크립트를 작성하세요.

name = input("이름: ")
place = input("좋아하는 장소: ")
hobby = input("취미: ")

template = f"존경받는 {name}님은 {place}에서 {hobby}하는 것을 세상에서 제일 좋아합니다!"
print(template)

태그: python 문자열 포매팅 while-else 인코딩 ASCII

7월 19일 21:18에 게시됨