44 — 플레이리스트: 랜덤 음악 재생
음악 플레이어는 노래 목록을 넘겨 가며 움직입니다 — JSON으로 불러와 랜덤 도우미로 섞고, 끝낼 때까지 반복하는 메뉴를 돌립니다.
단계
songs.json에 노래 다섯 곡을 저장합니다 —title과artist를 가진 딕셔너리들의 JSON 목록입니다:
실행해 보기 →[ {"title": "Hello", "artist": "Adele"}, {"title": "Dynamite", "artist": "BTS"}, {"title": "Love Dive", "artist": "IVE"}, {"title": "Life Goes On", "artist": "BTS"}, {"title": "Butter", "artist": "BTS"} ]목록을
json읽기로 불러오고섞기로 섞으며,랜덤선택으로 곡을 뛰어넘습니다. 전체 플레이어를playlist.ko.nme으로 저장합니다:
실행해 보기 →# playlist.ko.nme — 랜덤 음악 플레이어. # 실행: nme 실행 playlist.ko 랜덤 사용 최신 파일 사용 최신 노래들 = json읽기("songs.json") 섞기(노래들) 현재 = 0 말해 f"플레이리스트 로드: {len(노래들)}곡" while True: 말해 "" 말해 "명령: next, prev, list, quit" 물어봐 명령, "? " if 명령 == "next": 현재 = 현재 + 1 if 현재 >= len(노래들): 현재 = 0 노래 = 노래들[현재] 말해 f"재생 중: {노래['title']} - {노래['artist']}" elif 명령 == "prev": 현재 = 현재 - 1 if 현재 < 0: 현재 = len(노래들) - 1 노래 = 노래들[현재] 말해 f"재생 중: {노래['title']} - {노래['artist']}" elif 명령 == "list": 말해 f"플레이리스트 ({len(노래들)}곡):" for i in range(len(노래들)): mark = "> " if i == 현재 else " " 말해 f"{mark}{i + 1}. {노래들[i]['title']} - {노래들[i]['artist']}" elif 명령 == "quit": 말해 "안녕!" break파이프로 명령을 넣어 실행합니다:
printf 'next\nnext\nlist\nquit\n' | nme 실행 playlist.ko플레이리스트 로드: 5곡 명령: next, prev, list, quit ? 재생 중: Butter - BTS 명령: next, prev, list, quit ? 재생 중: Life Goes On - BTS 명령: next, prev, list, quit ? 플레이리스트 (5곡): 1. Love Dive - IVE 2. Butter - BTS > 3. Life Goes On - BTS 4. Dynamite - BTS 5. Hello - Adele 명령: next, prev, list, quit ? 안녕!next는 끝을 지나면 0으로,prev는 마지막 곡으로 되돌아갑니다.섞기가 순서를 섞어 실행마다 다르게 보여 줍니다.
직접 해보기
가수를 물어보고 그 가수의 곡이 몇 곡인지 알려 주는 count 명령을 더해 보세요 — 노래들을 돌며 카운터를 늘립니다.
배운 것
랜덤 사용 최신과파일 사용 최신을 함께 쓰면 두 도우미가 모두 로드됩니다.json읽기("songs.json")이 노래 목록을 읽고섞기(노래들)이 섞으며랜덤선택(노래들)이 하나를 고릅니다.노래들[현재]가 곡 하나를 읽고, 인덱스를 되돌리면 플레이리스트가 반복됩니다.while True메뉴와물어봐·말해·break가 플레이어를 움직입니다.