06. 여섯 번째 수업: 파이썬 while 무한 루프 록다운! 컴퓨터로 무한 찢기

지금까지 고대 철학자와 18세기 수학자들의 머리로 무한대($\infty$) 의 수렴(Convergence) 유리 천장을 증명했습니다. 하지만 우리는 21세기 해커입니다. 머리가 아프다면 컴퓨터 CPU 한테 대신 무한대 달리기를 시키면 됩니다.

파이썬의 마더퍼커 무한 루프문, while True: 를 발동시켜 “진짜 이 미립자 찌꺼기 10만 번 더하면 $1.000$ 에서 안 넘어가고 영구 정지 버그가 걸리는가?” 콘솔 창에 찍어보겠습니다.


1. 수렴 스크립트 작성 (제논의 ピ자 쪼가리)

아까 우리가 죽도록 찢었던 1/2 반갈죽 등비수열: $\mathbf{\frac{1}{2} \ + \ \frac{1}{4} \ + \ \frac{1}{8} \ + \ \frac{1}{16} \ + \ \dots}$ 이걸 파이썬에 while 로 돌립니다! 대신 $1.0000$ 에서 멈추는지 눈으로 봐야 하니, 한 번 더할 때마다 현재까지의 총 넓이(Sum) 를 프린트하도록 짜봅시다.

# [Python Code] 제논의 1/2 무한등비급수 팩토리얼 시뮬레이션
import time

# 1. 초기 셋업
current_piece = 0.5  # 제일 처음 튀어나온 대장 픽셀 쪼가리 (1/2)
total_sum = 0.0      # 지금까지 주워 담은 총 넓이 합계 장바구니!
turn_count = 1       # 루프 도는 턴 횟수 (무한의 굴레)

print("==== [WARNING] 무한 덧셈 엔진 가동! (목표 타겟: 수렴 1.0) ====\n")

# 2. 강제 영구 무한 루프 오픈!
while True:
    # 장바구니에 계속 지금 조각을 쑤셔 넣는다! (누적 덧셈 +=)
    total_sum += current_piece 
    
    # 디버깅 로그 렌더링
    print(f"[Turn {turn_count:02d}] 얹은 먼지 = {current_piece:.10f}  |  누적된 총면적 SUM = {total_sum:.15f}")
    
    # 3. 브레이크(탈출) 록다운: 
    # 만약 새로 주워 먹은 조각 먼지가 컴퓨터 메모리가 인지할 수 없는 극한의 먼지조각(1e-10) 보다 작아지면 
    # 더 이상 더하는게 의미 없으니 강제 엔진 컷다운!
    if current_piece < 0.0000000001:
        print("\n★ [시스템 알림] 더해지는 먼지가 너무 작아 메모리 표출 불가! 수렴 상태(Convergence) 록업 터짐! 엔진 셧다운! ★")
        break
    
    # 4. 다음 턴 조각 준비: 반갈죽 공비 r = 1/2 세팅!
    current_piece = current_piece * 0.5
    turn_count += 1
    
    # 너무 빨리 터지면 눈으로 못보니 0.1초 딜레이
    # time.sleep(0.1) 

2. 렌더링 콘솔의 공포

==== [WARNING] 무한 덧셈 엔진 가동! (목표 타겟: 수렴 1.0) ====

[Turn 01] 얹은 먼지 = 0.5000000000  |  누적된 총면적 SUM = 0.500000000000000
[Turn 02] 얹은 먼지 = 0.2500000000  |  누적된 총면적 SUM = 0.750000000000000
[Turn 03] 얹은 먼지 = 0.1250000000  |  누적된 총면적 SUM = 0.875000000000000
...
[Turn 10] 얹은 먼지 = 0.0009765625  |  누적된 총면적 SUM = 0.999023437500000
...
[Turn 20] 얹은 먼지 = 0.0000009537  |  누적된 총면적 SUM = 0.999999046325684
...
[Turn 32] 얹은 먼지 = 0.0000000002  |  누적된 총면적 SUM = 0.999999999767169
[Turn 33] 얹은 먼지 = 0.0000000001  |  누적된 총면적 SUM = 0.999999999883585
[Turn 34] 얹은 먼지 = 0.0000000000  |  누적된 총면적 SUM = 0.999999999941792

★ [시스템 알림] 더해지는 먼지가 너무 작아 메모리 표출 불가! 수렴 상태(Convergence) 록업 터짐! 엔진 셧다운! ★

보이십니까? Turn 10 때부터 이미 $0.999…$ 에 진입하더니, 턴수가 기하급수적으로 돌아갈수록 미친 듯이 $\mathbf{0.999999999…}$ 숫자 $9$를 옆으로 한없이 복제해 나갑니다. 하지만 절대! 결코 영원토록 십 자리 수인 $1.00000001$ 은 고사하고 $1.0000000$ 턱주가리 선 위로 넘어가지 못하고 저 유리 천장에 구속되어 얼어 죽어 버립니다.

파이썬 터미널 창에서 무한 루프문(while True)이 연쇄적으로 돌아가며 턴수가 올라가지만, 결국 추가된 면적이 메모리가 인지하지 못할 티끌로 산화되어 총합 1.0 극한을 0.999... 선에서 돌파하지 못하고 엔진이 셧다운 되는 에러 화면 시각화 SVG

제논이 이 파이썬 터미널 창을 봤다면 거품을 물고 쓰러졌을 겁니다. 시간과 우주를 쪼개 무한번 합체를 시켜도, 그 총량은 “수렴 공식 $S = a / (1 - r)$” 과 “파이썬 루프 메모리 극한계” 가 증명하듯 단단한 상수 바닥으로 곤두박질치는 진귀한 마법입니다.

자! 지금까지 “배열을 모조리 더해버릴 때 $\sum$ 일어나는 무한대 수렴” 만 팠다면. 다음 마지막 대미를 장식할 모듈 수학이야기 71화 에서는, “더하는 짓거리 치우고, 그냥 $\mathbf{x}$ 변수 자체를 우주 끝 무한대($\infty \infty \infty$) 로 확대 줌인 해버렸을 때” 일어나는 파동의 충돌, “수열과 함수의 종점 극한(Limits $\lim$)” 의 쌩얼을 까발리러 가겠습니다. 끝까지 해킹 파이프라인을 유지해 주십시오!

서브목차