콘텐츠 내 자동삽입광고

광고1

posted by 초코생크림빵 2025. 9. 13. 15:17
반응형

print('<< 369  >>')

num = int(input('1부터 시작하며, 마지막 숫자를 입력해주세요. '))

for a in range(1, num+1):
    if a%10 == 3 or a%10 == 6 or a%10 == 9:
        print('짝', end=' ')
    else:
        print(a, end=' ')

결과)
<< 369  >>
1부터 시작하며, 마지막 숫자를 입력해주세요. 20
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20

파이썬 소스 및 결과 입니다. 소스에 대해 설명 작성)

코드(369 게임) 자세히 설명

좋아요 — 주신 코드는 1부터 입력한 마지막 숫자까지 차례로 출력하되, 끝자리(1의 자리)가 3, 6, 9이면 그 숫자 대신 '짝'을 출력하는 간단한 369 게임 구현입니다. 아래에 한 줄씩 쉽게 풀어서 설명할게요.


한 줄 요약

  • a % 10으로 숫자의 마지막 자리를 확인하고, 그 값이 3, 6, 9일 때 '짝'을 출력합니다.
  • 모든 출력은 한 줄에 공백으로 구분해서 이어서 보여줍니다 (end=' ' 사용).

코드 줄별 설명

print('<< 369  >>')
  • 화면에 << 369 >> 라는 제목을 출력합니다.
num = int(input('1부터 시작하며, 마지막 숫자를 입력해주세요. '))
  • input(...)이 사용자로부터 문자열 입력을 받습니다.
  • int(...)로 그 문자열을 정수로 바꿔 num에 저장합니다.
  • 예: 사용자가 20을 입력하면 num == 20이 됩니다.
  • (주의) 사용자가 숫자가 아닌 값을 입력하면 ValueError가 납니다 — 예외 처리를 추가하면 더 안전합니다.
for a in range(1, num+1):
  • 1부터 num까지 반복합니다. (range의 끝은 제외이므로 num+1로 해서 num까지 포함)
  • 반복변수는 a입니다.
    if a%10 == 3 or a%10 == 6 or a%10 == 9:
  • a % 10은 a를 10으로 나눈 나머지 — 즉 마지막 자리(1의 자리) 를 구합니다.
  • 그 값이 3, 6, 9 중 하나인지 or로 검사합니다.
    • 예: 13 % 10 == 3 → 참, 26 % 10 == 6 → 참
        print('짝', end=' ')
  • 조건이 참이면 '짝'을 출력합니다.
  • end=' '로 출력 뒤에 줄바꿈 대신 공백 한 칸을 붙입니다. 그래서 출력이 한 줄에 이어집니다.
    else:
        print(a, end=' ')
  • 조건이 거짓이면 숫자 a 자체를 공백과 함께 출력합니다.

실행 예시 (입력: 20)

주신 실행 결과와 같이:

<< 369  >>
1부터 시작하며, 마지막 숫자를 입력해주세요. 20
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20

각 숫자별 판단 예:

  • 3 → 마지막 자리 3 → 짝
  • 6 → 짝
  • 9 → 짝
  • 13 → 마지막 자리 3 → 짝
  • 16 → 마지막 자리 6 → 짝
  • 20 → 마지막 자리 0 → 숫자 20 출력

개선(확장) 아이디어 — 자주 쓰는 변형

  1. '33' 같은 경우 두 번 박수 치기(짝짝)
    현재 코드는 33을 만나면 단지 '짝' 한 번만 출력합니다.
    박수 횟수를 숫자 내에 3,6,9가 몇 번 있는지로 세려면 다음처럼 바꿀 수 있습니다:
for a in range(1, num+1):
    s = str(a)
    cnt = sum(s.count(d) for d in '369')   # '3','6','9'가 나온 횟수 합
    if cnt > 0:
        print('짝' * cnt, end=' ')
    else:
        print(a, end=' ')
print()   # 마지막에 줄바꿈
  • 33이면 cnt == 2가 되어 짝짝이 출력됩니다.
  1. 잘못된 입력(문자 등) 처리
try:
    num = int(input('마지막 숫자: '))
except ValueError:
    print('정수를 입력하세요.')
    exit()
  1. 출력 후 줄바꿈 추가
    루프 끝나고 print()를 하나 추가하면 다음 프롬프트가 새 줄에서 시작합니다.

한눈에 흐름 정리

  1. 제목 출력
  2. 사용자에게 마지막 숫자를 입력받아 정수로 변환
  3. 1부터 그 숫자까지 하나씩 검사
  4. 각 수의 마지막 자리(% 10)가 3/6/9면 '짝' 출력, 아니면 숫자 출력
  5. 각 출력은 한 줄에 공백으로 구분

예외 처리 포함 버전이나 짝을 여러 번 치게 하는 버전. 모두 작성

 

 

1) 기본 + 예외 처리 버전

(숫자가 아닌 걸 입력하면 오류 안내 후 종료)

print('<< 369  >>')

try:
    num = int(input('1부터 시작하며, 마지막 숫자를 입력해주세요: '))
except ValueError:
    print('정수를 입력해야 합니다.')
    exit()

for a in range(1, num+1):
    if a % 10 in (3, 6, 9):   # 끝자리가 3, 6, 9면
        print('짝', end=' ')
    else:
        print(a, end=' ')
print()  # 마지막 줄바꿈

2) ‘짝짝’까지 지원하는 확장 버전

(33 → 짝짝, 369 → 짝짝짝)

print('<< 369 확장 >>')

try:
    num = int(input('1부터 시작하며, 마지막 숫자를 입력해주세요: '))
except ValueError:
    print('정수를 입력해야 합니다.')
    exit()

for a in range(1, num+1):
    s = str(a)
    cnt = sum(s.count(d) for d in '369')   # 3, 6, 9 등장 횟수 세기
    if cnt > 0:
        print('짝' * cnt, end=' ')
    else:
        print(a, end=' ')
print()

👉 혹시 원하시는 건

  • 단순히 끝자리가 3/6/9일 때만 ‘짝’ 출력하는 기본 버전인가요?
  • 아니면 33 같은 경우도 ‘짝짝’ 하도록 확장된 버전인가요?

네 👍 두 버전을 정리해서 드릴게요.


기본 버전 (끝자리만 체크)

3, 6, 9로 끝나는 숫자만 "짝" 출력합니다.

print('<< 369 기본 버전 >>')

try:
    num = int(input('1부터 시작하며, 마지막 숫자를 입력해주세요: '))
except ValueError:
    print('정수를 입력해야 합니다.')
    exit()

for a in range(1, num+1):
    if a % 10 in (3, 6, 9):   # 끝자리가 3, 6, 9면
        print('짝', end=' ')
    else:
        print(a, end=' ')
print()  # 마지막 줄바꿈

✅ 실행 예시 (입력: 20)

<< 369 기본 버전 >>
1부터 시작하며, 마지막 숫자를 입력해주세요: 20
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20

확장 버전 (짝짝, 짝짝짝 가능)

숫자 안에 들어있는 3, 6, 9의 개수만큼 "짝"을 출력합니다.

print('<< 369 확장 버전 >>')

try:
    num = int(input('1부터 시작하며, 마지막 숫자를 입력해주세요: '))
except ValueError:
    print('정수를 입력해야 합니다.')
    exit()

for a in range(1, num+1):
    s = str(a)
    cnt = sum(s.count(d) for d in '369')   # 3, 6, 9 등장 횟수
    if cnt > 0:
        print('짝' * cnt, end=' ')
    else:
        print(a, end=' ')
print()

✅ 실행 예시 (입력: 40)

<< 369 확장 버전 >>
1부터 시작하며, 마지막 숫자를 입력해주세요: 40
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20 
21 22 짝 24 25 짝 27 28 짝 30 짝 짝짝 짝 34 35 짝짝 37 38 짝 40
  • 30 → 짝 (끝자리 0이라 X, 십자리 3이라 O → 짝)
  • 33 → 짝짝 (3이 두 번 들어있음)
  • 36 → 짝짝 (3, 6 두 개 있음)

👉 혹시 두 버전을 합쳐서, 실행 전에

  • “기본 모드”
  • “확장 모드”

를 선택해서 돌릴 수 있는 프로그램 밑에 정리

 

 

좋습니다 🙌 그러면 모드 선택이 가능한 하나의 프로그램으로 만들어 드릴게요.


369 게임 (모드 선택 가능)

print('<< 369 게임 >>')

# 모드 선택
mode = input('모드를 선택하세요 (1: 기본, 2: 확장) : ')

try:
    num = int(input('1부터 시작하며, 마지막 숫자를 입력해주세요: '))
except ValueError:
    print('정수를 입력해야 합니다.')
    exit()

for a in range(1, num+1):
    if mode == '1':  # 기본 모드
        if a % 10 in (3, 6, 9):   # 끝자리만 확인
            print('짝', end=' ')
        else:
            print(a, end=' ')

    elif mode == '2':  # 확장 모드
        s = str(a)
        cnt = sum(s.count(d) for d in '369')   # 3,6,9 개수 세기
        if cnt > 0:
            print('짝' * cnt, end=' ')
        else:
            print(a, end=' ')

    else:  # 잘못된 모드 입력
        print('\n잘못된 모드를 선택했습니다. (1 또는 2만 입력하세요)')
        break

print()  # 줄바꿈

실행 예시

기본 모드 (입력: 1, 20)

<< 369 게임 >>
모드를 선택하세요 (1: 기본, 2: 확장) : 1
1부터 시작하며, 마지막 숫자를 입력해주세요: 20
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20

확장 모드 (입력: 2, 40)

<< 369 게임 >>
모드를 선택하세요 (1: 기본, 2: 확장) : 2
1부터 시작하며, 마지막 숫자를 입력해주세요: 40
1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20 21 22 짝 24 25 짝 27 28 짝 30 짝 짝짝 짝 34 35 짝짝 37 38 짝 40

 

반응형

콘텐츠 내 자동삽입광고