파이썬 리스트에서 홀수와 짝수 판별하고 개수 세기

파이썬 리스트에서 홀수와 짝수 판별하고 개수 세기

정수를 2로 나눈 나머지가 0이면 짝수이고, 그렇지 않으면 홀수입니다. 이 규칙은 0과 음수에도 그대로 적용됩니다. 목록을 한 번 순회하며 분류와 개수 계산을 구현해 보겠습니다.

숫자 하나 판별하기

number = -3

if number % 2 == 0:
    print("짝수")
else:
    print("홀수")

0은 2로 나누어떨어지므로 짝수입니다. 파이썬의 음수 나머지 연산에서도 이 판별식은 정상 동작합니다.

개수만 세기

numbers = [3, 8, 0, -5, -2, 11]
odd_count = 0
even_count = 0

for number in numbers:
    if number % 2 == 0:
        even_count += 1
    else:
        odd_count += 1

print("홀수:", odd_count)   # 3
print("짝수:", even_count)  # 3

개수만 필요하다면 홀수·짝수 목록을 별도로 만들 필요가 없어 메모리를 덜 사용합니다.

분류된 값도 필요할 때

odd_numbers = []
even_numbers = []

for number in numbers:
    target = even_numbers if number % 2 == 0 else odd_numbers
    target.append(number)

print(odd_numbers)   # [3, -5, 11]
print(even_numbers)  # [8, 0, -2]

sum을 이용한 짧은 계산

even_count = sum(number % 2 == 0 for number in numbers)
odd_count = len(numbers) - even_count

파이썬에서 True는 합계 계산에서 1처럼 동작합니다. 다만 입문 단계나 조건이 복잡할 때는 일반 반복문이 의도를 더 쉽게 보여 줍니다.

사용자 입력 검증

text = input("정수를 공백으로 구분해 입력하세요: ")

try:
    numbers = list(map(int, text.split()))
except ValueError:
    print("정수만 입력해 주세요.")
else:
    even = [n for n in numbers if n % 2 == 0]
    odd = [n for n in numbers if n % 2 != 0]
    print("짝수:", even)
    print("홀수:", odd)

오류 사례: 실수에 홀짝을 적용하기

3.5 % 2는 계산할 수 있지만 3.5를 홀수라고 부르지는 않습니다. 홀수와 짝수는 정수에 대한 개념입니다. 사용자 입력에서 float를 허용했다면 정수인지 먼저 검사하거나 입력 규칙을 정수로 제한해야 합니다.

value = 3.0
if value.is_integer():
    number = int(value)
    print("짝수" if number % 2 == 0 else "홀수")

연습: 홀수 합과 짝수 합

목록을 한 번만 순회하면서 홀수 개수·합계와 짝수 개수·합계를 모두 구해 보십시오. 빈 목록에서는 개수와 합계가 0이 되도록 하고, 숫자가 아닌 입력이 섞였을 때의 처리도 작성하세요.

예상 출력으로 판별식 검증하기

양수만 시험하면 0과 음수에서 확신하기 어렵습니다. 다음처럼 대표값을 표로 출력해 보십시오.

for number in [-3, -2, -1, 0, 1, 2, 3]:
    kind = "짝수" if number % 2 == 0 else "홀수"
    print(f"{number:2d}: {kind}")
-3: 홀수
-2: 짝수
-1: 홀수
 0: 짝수
 1: 홀수
 2: 짝수
 3: 홀수

연속된 정수에서는 홀수와 짝수가 번갈아 나온다는 사실도 확인할 수 있습니다.

함수의 입력 범위를 명확히 하기

def is_even(number):
    if not isinstance(number, int):
        raise TypeError("정수만 입력할 수 있습니다.")
    return number % 2 == 0

파이썬에서는 boolint의 하위 자료형이므로 is_even(True)도 참이 됩니다. 이런 입력을 허용할지 거부할지는 프로그램의 데이터 규칙에 따라 결정해야 합니다. 단순 학습 코드에서는 정수를 받는다고 문서로 명시하는 것으로 충분할 수 있고, 외부 입력을 다루는 API에서는 명시적인 검증이 더 중요합니다.

정리

홀짝 판별의 핵심은 number % 2 == 0입니다. 개수만 필요한지 실제 값도 필요한지에 따라 카운터 또는 별도 리스트를 선택하고, 사용자 입력에는 정수 변환 오류를 처리하십시오.