개발자의 서재

최소한의 코드와 최대의 창의력으로 80개가 넘는 재미있는 프로그램

지구빵집 2024. 5. 7. 07:40
반응형

 

 

베스트셀러 작가 알 스위가트가 최소한의 코드와 최대의 창의력으로 80개가 넘는 재미있는 프로그램을 쉽게 만드는 방법을 알려드립니다.

 

기본적인 파이썬 구문을 익히고 프로그램 작성을 시작할 준비가 되었다면, 작은 파이썬 프로젝트 빅북을 통해 깨달음과 재미를 모두 얻을 수 있을 것입니다. 81개의 Python 프로젝트로 구성된 이 컬렉션을 통해 디지털 아트, 게임, 애니메이션, 그램 수 세기 등을 바로 만들 수 있습니다. 코드가 어떻게 작동하는지 파악한 후에는 프로그램을 다시 만드는 연습을 하고 자신만의 커스텀 터치를 추가하여 실험해 볼 수 있습니다.

 

이 간단한 텍스트 기반 프로그램은 256줄 이하의 코드로 구성되어 있습니다. 빈티지 스크린세이버, 달팽이 경주 게임, 클릭베이트 헤드라인 생성기, 애니메이션 DNA 가닥 등 각 프로젝트는 독립적으로 설계되어 온라인에서 쉽게 공유할 수 있습니다. 

 

다음과 같은 프로그램을 만들 수 있습니다:

  • 행맨, 블랙잭 등 친구 또는 컴퓨터와 대결할 수 있는 게임
  • 산불, 백만 주사위 굴리기, 일본 주판 시뮬레이션
  • 가상 어항, 회전하는 큐브, 튀는 DVD 로고 스크린 세이버와 같은 애니메이션
  • 1인칭 3D 미로 게임
  • ROT13 및 Vigenère와 같은 암호를 사용하여 텍스트를 숨기는 암호화 프로그램

 

일반적인 단계별 튜토리얼에 지쳤다면 '작은 파이썬 프로젝트 빅북'의 실습을 통한 학습 방식이 마음에 드실 겁니다. 좋은 것은 작은 프로그램에서 나온다는 증거입니다! 

 

코드는 이곳을 참고하세요. "compare" 버튼을 클릭하면 코드가 나옵니다.

 

 

 



PROJECT #1 베이글 1
PROJECT #2 생일 역설 6
PROJECT #3 비트맵 메시지 11
PROJECT #4 블랙잭 15
PROJECT #5 돌아다니는 DVD 로고 23
PROJECT #6 카이사르 암호 29
PROJECT #7 카이사르 해커 34
PROJECT #8 캘린더 메이커 37
PROJECT #9 상자 속 당근 42
PROJECT #10 쵸우한 48
PROJECT #11 낚시성 기사 제목 생성기 53
PROJECT #12 콜라츠 추측 58
PROJECT #13 콘웨이의 라이프 게임 61
PROJECT #14 카운트다운 66
PROJECT #15 깊은 동굴 70
PROJECT #16 다이아몬드 74
PROJECT #17 주사위 계산 78
PROJECT #18 주사위 굴리기 85
PROJECT #19 디지털 시계 89
PROJECT #20 디지털 스트림 92
PROJECT #21 DNA 시각화 96
PROJECT #22 오리 100
PROJECT #23 에칭 그림판 107
PROJECT #24 인수 파인더 113
PROJECT #25 패스트 드로우 117
PROJECT #26 피보나치 120
PROJECT #27 수족관 124
PROJECT #28 플로더 133
PROJECT #29 산불 시뮬레이션 140
PROJECT #30 FOUR-IN-A-ROW 145
PROJECT #31 숫자 맞추기 152
PROJECT #32 속이기
PROJECT #33 해킹 미니 게임 159
PROJECT #34 행맨과 기요틴 166
PROJECT #35 헥사 그리드 173
PROJECT #36 모래시계 176
PROJECT #37 굶주린 로봇 182
PROJECT #38 J’ACCUSE! 190
PROJECT #39 랭턴의 개미 199
PROJECT #40 리트 스피크 205
PROJECT #41 럭키 스타 209
PROJECT #42 매직 포춘 볼 217
PROJECT #43 만칼라 221
PROJECT #44 메이즈 러너 2D 228
PROJECT #45 메이즈 러너 3D 234
PROJECT #46 백만 번의 주사위 굴림에 대한 통계 시뮬레이터 243
PROJECT #47 몬드리안 아트 생성기 247
PROJECT #48 몬티 홀 문제 254
PROJECT #49 곱셈표 261
PROJECT #50 NINETY-NINE BOTTLES 264
PROJECT #51 niNety-nniinE BoOttels 267
PROJECT #52 진법 카운터 272
PROJECT #53 원소 주기율표 276
PROJECT #54 피그 라틴 281
PROJECT #55 파워볼 복권 285
PROJECT #56 소수 290
PROJECT #57 프로그레스 바 294
PROJECT #58 무지개 298
PROJECT #59 가위 바위 보 301
PROJECT #60 가위 바위 보(항상 이기는 버전) 305
PROJECT #61 ROT13 암호 309
PROJECT #62 회전하는 큐브 312
PROJECT #63 우르의 로열 게임 319
PROJECT #64 7 세그먼트 디스플레이 모듈 328
PROJECT #65 빛나는 카펫 333
PROJECT #66 간단한 치환 암호 337
PROJECT #67 사인 메시지 342
PROJECT #68 슬라이딩 타일 퍼즐 346
PROJECT #69 달팽이 경주 353
PROJECT #70 소로반, 일본 주판 357
PROJECT #71 사운드 흉내 363
PROJECT #72 스펀지 표기법 367
PROJECT #73 스도쿠 퍼즐 370
PROJECT #74 텍스트 음성 변환 377
PROJECT #75 3-카드 몬테 380
PROJECT #76 틱-택-토 386
PROJECT #77 하노이 타워 390
PROJECT #78 함정이 있는 질문 395
PROJECT #79 2048 402
PROJECT #80 비즈네르 암호 410
PROJECT #81 물통 퍼즐 415
APPENDIX A 태그 색인 421
APPENDIX B 문자 맵 425



프로젝트 1, 베이글: 단서를 바탕으로 비밀 세 자리 숫자를 추리하세요. 1
상수를 사용하는 연습을 합니다.

프로젝트 2, 생일 역설: 서로 다른 크기의 그룹에 있는 두 사람이
서로 다른 크기의 그룹에서 두 사람이 같은 생일을 공유할 확률을 알아보세요. 6
파이썬의 날짜 시간 모듈을 사용합니다.


프로젝트 3, 비트맵 메시지: 2D 비트맵 이미지로 구성된
2D 비트맵 이미지로 구성된 메시지를 화면에 표시합니다. 11
여러 줄 문자열로 작업합니다.

프로젝트 4, 블랙잭: AI 딜러와 대결하는 고전적인 카드 게임. 15
유니코드 문자와 코드 포인트에 대해 알아보세요.

프로젝트 5, 바운싱 DVD 로고: 수십 년 전의 화려하게 튀어 오르는 DVD
로고를 시뮬레이션합니다. 23
좌표와 다채로운 텍스트로 작업해 보세요.

프로젝트 6, 시저 암호: 수천 년 전에 사용된 간단한 암호화 체계
수천 년 전에 사용되었습니다. 29
문자와 숫자 사이를 변환하여 텍스트에서 수학을 수행하세요.

프로젝트 7, 시저 해커: 시저 암호를 해독하는 프로그램
메시지를 암호화 키 없이 해독하는 프로그램. 33
무차별 암호 해독 알고리즘을 구현합니다.

프로젝트 8, 캘린더 메이커: 주어진 연도와 월에 대한 캘린더 페이지 만들기
달력 페이지를 생성하세요. 36
Python의 날짜 시간 모듈과 timedelta 데이터 유형을 사용합니다.

프로젝트 9, 상자 속 당근: 두 명의 플레이어 사이의 어리석은 허세 게임. 41
ASCII 아트 만들기.

프로젝트 10, 초한: 봉건 시대 일본의 도박 주사위 게임. 47
난수와 사전 데이터 구조를 사용하여 연습합니다.

프로젝트 11, 클릭베이트 헤드라인 생성기: 콘텐츠 팜을 위한 유머러스한 헤드라인 생성기. 51
문자열 조작과 텍스트 생성을 연습합니다.

 

프로젝트 12, 콜라츠 시퀀스: 수학에서 가장 단순한 불가능한

수학의 추측을 탐구해 보세요. 56

모듈러스 연산자에 대해 알아보세요.

 

프로젝트 13, 콘웨이의 인생 게임: 고전적인 셀룰러 오토마타

간단한 규칙으로 복잡한 돌발 행동을 만들어내는 고전적인 셀룰러 오토마타에 대해 알아보세요. 59
사전 데이터 구조와 화면 좌표를 사용합니다.

프로젝트 14, 카운트다운: 7세그먼트 디스플레이가 있는 카운트다운 타이머. 63
직접 만든 모듈 가져오기 연습하기.

프로젝트 15, 깊은 동굴: 땅속으로 끝없이 내려가는 터널 애니메이션.
땅속으로 끝없이 내려가는 터널 애니메이션. 66
문자열 복제와 간단한 수학을 사용합니다.

프로젝트 16, 다이아몬드: 다양한 크기의 다이아몬드를
다양한 크기의 다이아몬드를 그리는 알고리즘. 69
패턴 인식 기술을 연습하여 그리기 알고리즘을 만들어 보세요.

프로젝트 17, 주사위 수학: 시각적인 주사위 굴리기 수학 게임. 73
화면 좌표에 사전 데이터 구조를 사용하세요.

프로젝트 18, 주사위 롤러: 던전앤드래곤 주사위 표기법을 읽고 난수를 생성하는 도구. 79
텍스트를 파싱하여 키 문자열을 식별합니다.

프로젝트 19, 디지털 시계: 계산기와 같은 디스플레이가 있는 시계. 83
날짜/시간 모듈의 정보와 일치하는 숫자를 생성합니다.

프로젝트 20, 디지털 스트림: 영화 매트릭스를 닮은 스크롤 스크린세이버
매트릭스. 86
다양한 애니메이션 속도를 실험해 보세요.

프로젝트 21, DNA 시각화: 끝없이 펼쳐지는 아스키 아트 이중나선
DNA의 구조를 보여줍니다. 90
문자열 템플릿과 무작위로 생성된 텍스트로 작업해 보세요.

프로젝트 22, 오리 새끼: 문자열을 믹스 앤 매치하여 다양한
다양한 아스키 아트 오리를 만들어 보세요. 94
객체 지향 프로그래밍을 사용하여 오리 그림을 위한 데이터 모델을 만듭니다.

 

프로젝트 23, 에칭 서랍: 커서를 움직여 선 그림을 만듭니다. 100
화면 좌표와 상대적인 방향 이동으로 작업합니다.

프로젝트 24, 인수분해기: 숫자의 모든 곱셈 인자를 찾습니다. 106
모듈러스 연산자와 파이썬의 수학 모듈을 사용해 보세요.

프로젝트 25, 빠르게 그리기: 반사 신경을 테스트하여 자신이 가장 빠른지 알아보세요.
키보드를 사용해 보세요. 110
키보드 버퍼에 대해 알아보세요.

 

프로젝트 26, 피보나치: 유명한 피보나치 수열로 숫자 생성하기
수열로 숫자 생성하기. 113
기초적인 수학 알고리즘을 구현합니다.

 

프로젝트 27, 어항: 다채로운 색상의 애니메이션 ASCII 아트 어항 만들기. 117
화면 좌표, 텍스트 색상, 데이터 구조를 사용합니다.

프로젝트 28, 플러더: 퍼즐 판 전체를 한 가지 색상으로 채우세요. 125
홍수 채우기 알고리즘을 구현합니다.

프로젝트 29, 산불 시뮬레이션: 숲을 통한 산불 확산 시뮬레이션
산불 확산을 시뮬레이션합니다. 132
조정 가능한 매개변수를 사용하여 시뮬레이션을 생성합니다.

프로젝트 30, 연속 4연승: 두 명의 플레이어가
네 개의 타일을 연속으로 연결하는 보드 게임입니다. 137
중력을 모방하는 데이터 구조를 만듭니다.

프로젝트 31, 숫자 맞추기: 고전적인 숫자 맞추기 게임. 143
초보자를 위한 프로그램 기본 개념.

프로젝트 32, 속기 쉬운: 유머러스한 프로그램으로 속기 쉬운 사람들을 몇 시간 동안
몇 시간 동안 바쁘게 만드는 유머 프로그램. 147
입력 유효성 검사와 루프를 사용합니다.

프로젝트 33, 해킹 미니게임: 단서를 바탕으로 암호를 추리하세요. 150
기본 게임에 꾸미기 기능을 추가하여 더 재미있게 만들기.

프로젝트 34, 교수형 집행인과 단두대: 고전적인 단어 맞추기 게임.156
문자열 조작과 ASCII 아트를 사용하세요.

프로젝트 35, 육각 그리드: 바둑판식 아트를 프로그래밍 방식으로 생성합니다. 162
루프를 사용하여 반복되는 텍스트 패턴 만들기.

프로젝트 36, 모래시계: 떨어지는 모래를 위한 간단한 물리 엔진. 165
중력을 시뮬레이션하고 충돌 감지를 사용합니다.

 

프로젝트 37, 배고픈 로봇: 미로에서 킬러 로봇을 피하세요. 171
로봇의 움직임을 위한 간단한 AI를 만듭니다.

프로젝트 38, J'Accuse! 거짓말쟁이와 진실한 사람을 가려내는 탐정 게임. 178
데이터 구조를 사용하여 용의자, 장소, 물건 단서 사이의 관계를 생성합니다.

프로젝트 39, 랭턴의 개미: 간단한 규칙에 따라 개미가 움직이는
개미가 움직이는 셀룰러 오토마타. 186
간단한 규칙이 어떻게 복잡한 그래픽 패턴을 만드는지 살펴봅니다.

프로젝트 40, 리트스피크: 영어 메시지를 l33t5p34로 번역하기]<. 192
텍스트 구문 분석과 문자열 조작을 사용해 보세요.

프로젝트 41, 행운의 별: 행운의 주사위 게임. 195
아스키 아트와 확률 연습하기.

프로젝트 42, 매직 포춘볼: 미래에 대한 예/아니오 질문에 답하는 프로그램. 202
기본 텍스트를 더 재미있게 보이도록 꾸미기 기능을 추가합니다.

프로젝트 43, 만칼라: 메소포타미아의 고대 2인용 보드 게임
메소포타미아에서 온 고대 2인용 보드게임. 206
ASCII 아트와 문자열 템플릿을 사용하여 보드 게임을 그려보세요.

프로젝트 44, 메이즈러너 2D: 미로를 탈출해 보세요. 213
텍스트 파일에서 미로 데이터를 읽습니다.

프로젝트 45, 메이즈러너 3D: 3D로 미로를 탈출해 보세요! 219
여러 줄의 문자열을 수정하여 3D 보기를 표시합니다.

프로젝트 46, 백만 주사위 굴리기 통계 시뮬레이터: 일련의 주사위를 굴려
주사위를 백만 번 굴렸을 때의 확률 결과를 살펴봅니다. 228
컴퓨터가 대량의 숫자를 어떻게 계산하는지 알아보세요.

프로젝트 47, 몬드리안 아트 생성기: 피에트 몬드리안 스타일의 기하학적 도면
기하학적 그림을 만들어 보세요. 231
예술 작품 생성 알고리즘을 구현합니다.

프로젝트 48, 몬티 홀 문제: 몬티 홀의 시뮬레이션
게임 쇼 문제를 시뮬레이션합니다. 238
ASCII 아트 염소로 확률을 조사합니다.

프로젝트 49, 구구단: 곱셈표 표시하기
표를 최대 12×12까지 표시하기. 245
텍스트 띄어쓰기 연습하기.

프로젝트 50, 아흔아홉 병: 반복되는 노래 가사를 표시합니다. 248
루프와 문자열 템플릿을 사용하여 텍스트를 생성합니다.

프로젝트 51, 아흔아홉 개의 보틀: 반복적인 노래의 가사를 표시합니다.
노래 가사를 표시합니다. 251
문자열을 조작하여 왜곡을 도입합니다.

프로젝트 52, 숫자 시스템 카운터: 2진수와
16진수를 살펴봅니다. 255
파이썬의 숫자 변환 함수를 사용합니다.

프로젝트 53, 원소 주기율표: 대화형 데이터베이스
대화형 데이터베이스 259
CSV 파일을 파싱하여 프로그램에 데이터를 로드합니다.

프로젝트 54, 돼지 라틴어: 영어 메시지를 이그페이 아틴레이로 번역합니다. 263
텍스트 구문 분석과 문자열 조작을 사용합니다.

프로젝트 55, 파워볼 복권: 복권에서 지는 시뮬레이션을
수천 번 시뮬레이션. 267
난수를 사용해 확률을 탐구합니다.

프로젝트 56, 소수: 소수를 계산해 보세요. 272
수학 개념을 배우고 Python의 수학 모듈을 사용해 보세요.

프로젝트 57, 진행률 표시줄: 다른 프로그램에서 사용할 수 있는 진행률 표시줄 애니메이션 샘플
애니메이션 샘플. 275
백스페이스 인쇄 기법을 사용하여 애니메이션을 만듭니다.

프로젝트 58, 무지개: 간단한 무지개 애니메이션. 279
초보자를 위한 애니메이션을 만듭니다.

프로젝트 59, 가위바위보: 고전적인 손 게임
2인용 가위바위보 게임. 282
기본 게임 규칙을 프로그램으로 구현합니다.

프로젝트 60, 가위바위보(항상 이기는 버전):
플레이어가 절대 질 수 없는 버전의 게임. 286
프로그램에 무작위성을 부여합니다.

프로젝트 61, ROT13 암호: 텍스트를 암호화하고 해독하는 가장 간단한
텍스트를 암호화하고 해독하는 가장 간단한 암호입니다. 290
문자와 숫자 사이를 변환하여 텍스트에서 수학을 수행합니다.

 

프로젝트 62, 회전하는 큐브: 회전하는 큐브 애니메이션. 293
3D 회전과 선 그리기 알고리즘을 배워보세요.

 

프로젝트 63, 왕실의 우르 게임: 메소포타미아에서 온 5,000년 된 게임
메소포타미아에서 온 게임. 300
ASCII 아트와 문자열 템플릿을 사용하여 보드 게임을 그려봅니다.

 

프로젝트 64, 7분할 디스플레이 모듈: 계산기와 전자렌지에 사용되는
계산기나 전자렌지에 사용되는 것과 같은 디스플레이. 308
다른 프로그램에서 사용할 수 있는 모듈을 만들어 보세요.

 

프로젝트 65, 빛나는 카펫: 샤이닝의 카펫을 프로그래밍 방식으로 생성합니다.
카펫을 프로그래밍적으로 생성합니다. 312
루프를 사용하여 반복되는 텍스트 패턴을 만듭니다.

 

프로젝트 66, 단순 치환 암호: 시저 암호보다
시저 암호보다 더 진보된 암호화 체계. 315
텍스트에 중급 수학을 수행합니다.

 

프로젝트 67, 사인 메시지: 스크롤링 웨이브 메시지를 표시합니다. 320
애니메이션에 삼각함수를 사용하세요.

 

프로젝트 68, 슬라이딩 타일 퍼즐: 고전적인 4×4 타일 퍼즐. 323
게임 보드의 상태를 반영하기 위해 데이터 구조를 사용합니다.

 

프로젝트 69, 달팽이 경주: 빠르게 진행되는 달팽이 경주 액션! 329
아스키 아트 달팽이의 간격을 계산합니다.

 

프로젝트 70, 소로반 일본 주판: 컴퓨터 시뮬레이션
사전 컴퓨터 계산 도구. 333
문자열 템플릿을 사용해 아스키 아트 계산 도구를 만듭니다.

 

프로젝트 71, 소리 모방하기: 점점 더 길어지는
소리 패턴을 외워보세요. 339
파이썬 프로그램에서 사운드 파일 재생하기.

 

프로젝트 72, 영어 메시지 번역: 영어 메시지를
sPOnGEcAsE. 343
문자열에서 문자의 대소문자를 변경하기.

 

프로젝트 73, 스도쿠 퍼즐: 고전적인 9×9 신문지
추리 퍼즐. 346
데이터 구조로 퍼즐을 모델링하세요.

 

프로젝트 74, 텍스트 음성 변환 토커: 컴퓨터가
대화하게 하세요! 353
운영 체제의 텍스트 음성 변환 엔진을 사용하세요.

 

프로젝트 75, 쓰리 카드 몬테: 사기꾼들이 관광객을 대상으로 하는 까다로운 카드 빨리 바꾸기
사기꾼들이 관광객을 상대로 하는 게임. 356
무작위 움직임을 기반으로 데이터 구조를 조작하세요.

 

프로젝트 76, 틱택토: 고전적인 2인용 보드 게임인
고전적인 2인용 보드 게임. 361
데이터 구조와 도우미 함수를 만듭니다.

 

프로젝트 77, 하노이의 탑: 고전적인 디스크
스태킹 퍼즐. 365
스택 데이터 구조를 사용하여 퍼즐 상태를 시뮬레이션합니다.

 

프로젝트 78, 트릭 질문: 간단한 질문으로 구성된 퀴즈로
오답이 있는 퀴즈. 370
사용자의 텍스트를 파싱하여 키워드를 인식합니다.

 

프로젝트 79, 스물 마흔 여덟: 캐주얼 타일 맞추기 게임. 377
중력을 시뮬레이션하여 타일이 임의의 방향으로 "떨어지도록" 만듭니다.

프로젝트 80, 비제네르 사이퍼: 매우 진보된 암호화 체계로
컴퓨터가 발명될 때까지 수백 년 동안 깨지지 않았던 암호화 체계. 385
텍스트에 대한 고급 수학을 수행하세요.

프로젝트 81, 물통 퍼즐: 물통 3개를 채우고 비워 정확히 4리터의
물통 세 개를 채우고 비워 정확히 4리터의 물을 얻으세요. 390
문자열 템플릿을 사용해 ASCII 아트를 생성하세요.

반응형