어떤 숫자들은 앞에 0이 하나 이상 붙어야 하는 경우가 있습니다. 예를 들어, 사용자 ID가 특정 값 미만일 때 모든 ID 번호의 길이를 동일하게 맞추기 위해 시작 부분에 일정 개수의 0을 붙여야 할 수 있습니다.
파이썬에서는 zfill() 함수를 사용해 문자열에 0을 채울 수 있고, 문자열 포매팅을 사용해 숫자에 0을 채울 수 있습니다. 이 가이드에서는 문자열과 정수에 각각 0을 채우는 방법을 실전 예제와 함께 살펴봅니다.
파이썬: 문자열에 0 채우기
복권 추첨 번호가 당첨 번호인지 확인하는 프로그램을 작성한다고 가정해 보겠습니다. 각 복권 번호는 다음과 같이 세 자리 숫자로 구성됩니다.
022
프로그램은 사용자에게 번호를 입력하도록 요청합니다. 사용자가 입력한 번호가 100보다 작으면 번호 앞에 0이 추가됩니다. 이렇게 하면 프로그램이 사용자가 입력한 번호와 당첨 번호를 정확하게 비교할 수 있습니다.
먼저 당첨 복권 번호 목록을 정의합니다.
winners = ["033", "087", "183", "173", "012"]
각 티켓 번호는 문자열 형식으로 저장되어 있습니다. 다음으로 input() 메서드를 사용해 사용자에게 번호를 입력받습니다.
to_check = input("확인하고 싶은 번호를 입력하세요: ")사용자가 입력한 번호가 바로 당첨자 목록에서 찾으려는 값이며, 이 값 역시 문자열 형식입니다.
그런데 사용자가 반드시 세 자리 번호를 입력한다고 보장할 수 없습니다. 사용자가 입력한 복권 번호가 올바른 형식을 갖도록 하려면 zfill() 메서드를 사용하면 됩니다. 이 메서드는 숫자 앞에 0을 추가해 줍니다.
복권 번호가 세 자리이므로 zfill() 메서드에 3을 매개변수로 전달합니다.
to_check = to_check.zfill(3)
이 메서드는 to_check 값이 올바르게 포맷되도록 보장합니다. 여기서 주의할 점은, 매개변수 3은 to_check에 들어가야 할 숫자의 총 길이를 의미한다는 것입니다. 채워질 0의 개수를 의미하는 것이 아닙니다.
다음으로 if 문과 in 연산자를 사용해 to_check 값이 당첨 복권 번호 목록에 포함되어 있는지 확인합니다.
if to_check in winners:
print("티켓 #{}은 당첨 번호입니다.".format(to_check))
else:
print("티켓 #{}은 당첨 번호가 아닙니다.".format(to_check))
입력한 티켓 번호가 당첨 번호와 일치하면 if 문이 실행되고, 그렇지 않으면 else 문이 실행됩니다. 코드를 실행해 결과를 확인해 보겠습니다.
확인하고 싶은 번호를 입력하세요: 33
티켓 #033은 당첨 번호입니다.
코드가 성공적으로 033번 티켓이 당첨임을 확인했습니다. 이번에는 당첨되지 않는 번호를 입력하면 어떻게 되는지 살펴보겠습니다.
확인하고 싶은 번호를 입력하세요: 182
티켓 #182은 당첨 번호가 아닙니다.
프로그램은 해당 티켓이 당첨이 아니라고 정확히 알려줍니다.
파이썬: 숫자(정수)에 0 채우기
참고: 아래 예제는 파이썬 2.7 및 그 이후 버전에서만 동작합니다.
첫 번째 예제에서는 문자열로 저장된 값에 0을 채웠습니다. 만약 숫자 타입의 값에 0을 채우고 싶다면 다른 접근 방식을 사용해야 합니다.
회사에서 근무하는 각 직원을 식별하기 위한 직원 식별 코드 목록을 생성한다고 가정해 보겠습니다. 각 ID 번호는 세 자리 숫자로 시작하고 직원의 성으로 끝나야 합니다.
먼저 사용자에게 직원 ID의 시작 숫자를 입력하도록 요청합니다. 직원의 성도 함께 입력받습니다.
id_numbers = int(input("직원의 ID 번호를 입력하세요: "))
surname = input("직원의 성을 입력하세요: ")다음으로 .format() 메서드를 사용해 이 값들을 하나의 문자열로 포맷합니다.
print("{} 직원의 식별자는 {:03d}{}입니다.".format(surname, id_numbers, surname))중괄호({})는 문자열 안에서 실제 값으로 대체될 자리 표시자입니다.
첫 번째 중괄호는 직원의 성으로 대체됩니다. 두 번째 중괄호는 id_numbers 값으로 대체되며, 여기서 {:03d}는 값을 최소 세 자리 정수로 표현하라는 의미입니다. 따라서 입력한 숫자가 세 자리보다 짧으면 앞에 0이 자동으로 추가됩니다. 마지막 중괄호는 직원 식별자의 마지막 부분인 성을 나타냅니다.
프로그램을 실행해 보겠습니다.
직원의 ID 번호를 입력하세요: 823
직원의 성을 입력하세요: SMITH
SMITH 직원의 식별자는 823SMITH입니다.
프로그램이 정상적으로 작동합니다. 이 경우 세 자리 ID 번호를 입력했습니다. 이번에는 두 자리 ID 번호를 입력하면 어떻게 되는지 살펴보겠습니다.
직원의 ID 번호를 입력하세요: 78
직원의 성을 입력하세요: JONES
JONES 직원의 식별자는 078JONES입니다.
프로그램은 여전히 설명된 형식대로 식별자를 생성합니다. 즉, 각 식별자는 세 자리 숫자 뒤에 직원의 성이 붙는 구조를 유지합니다.
참고: f-string으로 더 간결하게 0 채우기
파이썬 3.6 이상을 사용한다면 f-string을 활용해 같은 결과를 더 간결하게 얻을 수 있습니다.
print(f"{surname} 직원의 식별자는 {id_numbers:03d}{surname}입니다.")f-string 안에서도 {값:03d} 형식을 그대로 사용할 수 있으므로, 가독성이 좋아지고 코드가 한 줄로 줄어드는 장점이 있습니다.
마무리
정리하면, 파이썬에서 문자열 앞에 0을 채우려면 zfill() 메서드를 사용하고, 정수 값에 0을 채우려면 .format() 메서드 또는 f-string 포매팅을 사용하면 됩니다.
이제 여러분도 전문 개발자처럼 파이썬에서 값 앞에 0을 손쉽게 추가할 수 있습니다!