[{"data":1,"prerenderedAt":332},["ShallowReactive",2],{"tag-labels":3,"site-header":4,"article-perulangan-dengan-while-loop-pada-python-id":72},{},{"featuredPost":5,"navigations":29},{"id":6,"title":7,"title_en":8,"slug":9,"excerpt":10,"excerpt_en":11,"has_translation":12,"published_at":13,"reading_time":14,"hidden_from_listing":15,"tags":16,"thumbnail_image":21,"og_image":22,"series":23,"authors":28},110,"Ketika Pilih Framework Cuma Biar Kelihatan Beda","When You Pick a Framework Just to Look Different","ketika-pilih-framework-cuma-biar-kelihatan-beda","Terakhir kali kamu milih framework atau library baru, itu karena masalahmu butuh alat itu, atau karena alatnya kedengaran keren dan belum banyak yang pakai? Pertanyaan ini nggak enak dijawab. Soalnya keputusan teknologi sering diambil dengan alasan yang nggak pernah ditulis di dokumen teknis mana pun.","The last time you chose a new framework or library, was it because your problem needed that tool, or because it sounded cool and few people around you were using it? That question is uncomfortable. Technology decisions are often made for reasons that never appear in any technical document.",true,"2026-10-06T15:25:21.000Z",5,false,[17,18,19,20],"karier","framework","opini","pengalaman",null,"\u002Fog\u002Fketika-pilih-framework-cuma-biar-kelihatan-beda.png",{"id":24,"title":25,"title_en":26,"slug":27},9,"Artikel","Articles","all",[],[30,46,67],{"collection":31,"item":32},"series",{"__typename":31,"title":25,"title_en":26,"slug":27,"children_series":33},[34,38,42],{"title":35,"title_en":36,"slug":37},"Kecerdasan Artifisial","Artificial Intelligence","kecerdasan-artifisial",{"title":39,"title_en":40,"slug":41},"Konsep Dasar Pemrograman","Programming Fundamentals","konsep-dasar-pemrograman",{"title":43,"title_en":44,"slug":45},"Algoritma dan Struktur Data","Algorithms and Data Structures","algoritma-struktur-data",{"collection":31,"item":47},{"__typename":31,"title":48,"title_en":48,"slug":49,"children_series":50},"Tutorial","tutorial",[51,55,59,63],{"title":52,"title_en":53,"slug":54},"Belajar Python","Learning Python","belajar-python",{"title":56,"title_en":57,"slug":58},"Belajar Golang","Learning Go","belajar-golang",{"title":60,"title_en":61,"slug":62},"Belajar Java","Learning Java","belajar-java",{"title":64,"title_en":65,"slug":66},"Belajar Pascal","Learning Pascal","belajar-pascal",{"collection":31,"item":68},{"__typename":31,"title":69,"title_en":69,"slug":70,"children_series":71},"Lab","lab",[],{"article":73,"renderedBody":218,"renderedTakeaway":219,"latestArticles":220,"toc":315},{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":81,"hidden_from_listing":15,"tags":82,"thumbnail_image":21,"og_image":87,"series":88,"authors":211,"body_locale":214,"available_locales":215,"body":217,"takeway":21,"prerequisite":21},94,"Perulangan dengan WHILE Loop pada Python","Repetition with the WHILE Loop in Python","perulangan-dengan-while-loop-pada-python","Berbeda dengan perulangan for, dengan while kita akan menggunakan kondisi boolean sebagai pengendalinya.","Unlike the for loop, a while loop uses a boolean condition as its controller.","2021-07-21T03:52:03.000Z",4,[83,84,85,86],"python","perulangan","loop","struktur-kontrol","\u002Fog\u002Fperulangan-dengan-while-loop-pada-python.png",{"id":89,"title":90,"title_en":91,"slug":92,"description":93,"description_en":94,"articles":95,"children_series":180,"parent_series":181},19,"Struktur Kontrol","Control Structures","python-struktur-kontrol","Bikin program yang bisa ngambil keputusan dan ngulang pekerjaan — percabangan, perulangan, sampai list comprehension.","Make a program decide things and repeat work: branching, loops, and list comprehension.",[96,116,130,135,149,164],{"id":97,"title":98,"title_en":99,"slug":100,"excerpt":101,"excerpt_en":102,"has_translation":12,"published_at":103,"reading_time":104,"hidden_from_listing":15,"tags":105,"thumbnail_image":21,"og_image":107,"series":108,"authors":109},92,"Percabangan dengan IF, ELIF, ELSE pada Python","Branching with IF, ELIF, ELSE in Python","percabangan-dengan-if-elif-else-pada-python","Conditional statement bertugas untuk menjalankan perintah sesuai kondisi. Pada python, hal ini ditangani oleh if statement.","A conditional statement runs a command only when its condition holds. In Python, the if statement handles that job.","2021-05-28T03:36:19.000Z",3,[83,106,86],"percabangan","\u002Fog\u002Fpercabangan-dengan-if-elif-else-pada-python.png",{"id":89,"title":90,"title_en":91,"slug":92},[110],{"authors_id":111},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},1,"Daffa Izzuddin","izzudd","Writer",{"id":117,"title":118,"title_en":119,"slug":120,"excerpt":121,"excerpt_en":122,"has_translation":12,"published_at":123,"reading_time":14,"hidden_from_listing":15,"tags":124,"thumbnail_image":21,"og_image":125,"series":126,"authors":127},93,"Perulangan dengan FOR Loop pada Python","Repetition with the FOR Loop in Python","perulangan-dengan-for-loop-pada-python","for loop merupakan perulangan yang sudah diketahui kapan mulainya dan kapan selesainya.","A for loop is a loop where you already know when it starts and when it ends.","2021-07-10T03:46:32.000Z",[83,84,85,86],"\u002Fog\u002Fperulangan-dengan-for-loop-pada-python.png",{"id":89,"title":90,"title_en":91,"slug":92},[128],{"authors_id":129},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":81,"hidden_from_listing":15,"tags":82,"thumbnail_image":21,"og_image":87,"series":131,"authors":132},{"id":89,"title":90,"title_en":91,"slug":92},[133],{"authors_id":134},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":136,"title":137,"title_en":138,"slug":139,"excerpt":140,"excerpt_en":141,"has_translation":12,"published_at":142,"reading_time":104,"hidden_from_listing":15,"tags":143,"thumbnail_image":21,"og_image":144,"series":145,"authors":146},95,"Statement BREAK dan CONTINUE pada Python","The BREAK and CONTINUE Statements in Python","statement-break-dan-continue-pada-python","Python memiliki statement break dan continue untuk mengatasi kasus-kasus khusus pada struktur kontrol.","Python has the break and continue statements to handle special cases in control structures.","2021-10-28T03:59:18.000Z",[83,84,85,86],"\u002Fog\u002Fstatement-break-dan-continue-pada-python.png",{"id":89,"title":90,"title_en":91,"slug":92},[147],{"authors_id":148},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":150,"title":151,"title_en":152,"slug":153,"excerpt":154,"excerpt_en":155,"has_translation":12,"published_at":156,"reading_time":104,"hidden_from_listing":15,"tags":157,"thumbnail_image":21,"og_image":159,"series":160,"authors":161},96,"Percabangan dengan Ternary Operator pada Python","Branching with the Ternary Operator in Python","percobangan-dengan-ternary-operator-pada-python","Pada Python ternary operator untuk mempersingkat assignment yang melibatkan kondisi IF ELSE.","In Python the ternary operator shortens an assignment that involves an IF ELSE condition.","2021-11-21T04:07:50.000Z",[83,106,158,86],"operator","\u002Fog\u002Fpercobangan-dengan-ternary-operator-pada-python.png",{"id":89,"title":90,"title_en":91,"slug":92},[162],{"authors_id":163},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":165,"title":166,"title_en":167,"slug":168,"excerpt":169,"excerpt_en":170,"has_translation":12,"published_at":171,"reading_time":14,"hidden_from_listing":15,"tags":172,"thumbnail_image":21,"og_image":175,"series":176,"authors":177},97,"List Comprehension Pada Pyhton","List Comprehension in Python","list-comprehension-pada-pyhton","list comprehension merupakan ternary operator pada Python untuk mempersingkat proses inisialisasi variable list","List comprehension is the ternary operator in Python that shortens the process of initializing a list variable.","2021-11-27T03:17:02.000Z",[83,173,174],"list","list-comprehension","\u002Fog\u002Flist-comprehension-pada-pyhton.png",{"id":89,"title":90,"title_en":91,"slug":92},[178],{"authors_id":179},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},[],{"id":182,"title":52,"title_en":53,"slug":54,"parent_series":183,"children_series":184},10,{"id":112,"title":48,"title_en":48,"slug":49},[185,190,195,200,201,206],{"id":186,"title":187,"title_en":188,"slug":189,"cover_image":21},16,"Berkenalan dengan Bahasa Python","Getting Started with Python","python-intro",{"id":191,"title":192,"title_en":193,"slug":194,"cover_image":21},17,"Variabel, Tipe Data, dan Operasi","Variables, Types, and Operations","python-variabel-tipe-data",{"id":196,"title":197,"title_en":198,"slug":199,"cover_image":21},18,"Menggunakan Script Python","Working with Python Scripts","python-pemrograman-dengan-script",{"id":89,"title":90,"title_en":91,"slug":92,"cover_image":21},{"id":202,"title":203,"title_en":204,"slug":205,"cover_image":21},20,"Pemrograman Fungsional dengan Python","Functional Programming with Python","python-pemrograman-fungsional",{"id":207,"title":208,"title_en":209,"slug":210,"cover_image":21},30,"Koleksi dan String","Collections and Strings","python-collections",[212],{"authors_id":213},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},"id",[216,214],"en","Berbeda dengan [perulangan `for`](https:\u002F\u002Finvasikode.com\u002Ffor-loop-python\u002F) yang sudah diketahui kapan mulai dan kapan selesainya, pada perulangan `while` kita akan menggunakan [kondisi boolean](https:\u002F\u002Finvasikode.com\u002Ftipe-data-boolean-python\u002F) sebagai pengendalinya.\n\nKira-kira apa yang membuat `while` loop lebih dari `for` loop? kapan harus menggunakan `while` loop? dan bagaimana cara membuatnya? Mari kita bahas lebih lanjut.\n\n> Ingin tahu konsep `while` loop dijelaskan tanpa harus ngoding? Silahkan lihat penjelasan tentang [Konsep Struktur Kontrol pada Pemrograman](https:\u002F\u002Finvasikode.com\u002Fstruktur-kontrol\u002F#WHILE_loop).\n\n## Struktur WHILE Loop pada Python\n\nPada umumnya struktur `while` loop cukup sederhana, bahkan di bahasa pemrograman lain juga. Berikut ini strukturnya pada Python\n\n```\nwhile \u003Ckondisi>:\n  \u003Cperintah>\n```\n\nDengan:\n\n* `kondisi`: [ekspresi boolean](https:\u002F\u002Finvasikode.com\u002Fstruktur-kontrol\u002F#Tentang_Kondisi_Boolean) yang akan dievaluasi sebagai pengendali perulangan\n* `perintah`: satu atau beberapa perintah yang akan dijalankan\n\n## Bagaimana WHILE Loop Bekerja?\n\nJIka pada `for` loop jumlah iterasi sudah ditentukan di awal, pada `while` loop kita tidak perlu mendeklarasikan jumlah iterasinya, sebagai gantinya kita perlu menggunakan kondisi boolean sebagai pengendali perulangan.\n\nPerulangan `while` akan terus berjalan ketika kondisi bernilai `True`, dan hanya berhenti ketika kondisi bernilai `False` atau ada pemanggilan perintah `break`.\n\nCoba jalankan kode Python di bawah ini:\n\n```python\ni = 1\nwhile i \u003C= 5:\n  print(i)\n  i += 1\n```\n\nJika dijalankan maka akan keluar bilangan 1 sampai 5. Kira-kira apa yang terjadi pada kode tersebut? mari kita bahas satu per satu.\n\n* Pada awalnya variable `i` bernilai 1. Selanjutnya kita masuk ke `while` statement yang akan mengevaluasi apakah nilai `i` saat ini kurang dari sama dengan 5. Karena `1 \u003C= 5` maka kondisi bernilai `True` sehingga perintah pada baris 3 dan 4 akan dieksekusi. Pada baris ke-3 kita mencetak nilai `i`, pada baris ke-4 kita menambahkan nilai `i` dengan 1 sehingga sekarang nilai `i` adalah 2.\n* Ketika semua perintah dalam loop telah dijalankan maka alur program akan kembali lagi ke pengecekan kondisi `while`. Sekarang nilai `i` adalah 2 sehingga kondisi tetap bernilai `True` dan perintah kembali dijalankan. Nilai `i` akan dicetak dan ditambah dengan 1 hingga sekarang bernilai 3.\n* Begitu seterusnya sampai `i` bernilai 6. Ketika `i` bernilai 6 maka kondisi akan bernilai `False` karena `6 \u003C= 5` adalah salah. Ketika itu perintah dalam perulangan tidak akan dieksekusi dan looping dinyatakan selesai.\n\nSekarang bagaimana jika kodenya diubah menjadi begini:\n\n```python\ni = 10\nwhile i \u003C= 5:\n  print(i)\n  i += 1\n```\n\nCoba jalankan, pasti tidak akan keluar apa-apa. Ini karena pada pengecekan kondisi `while` yang pertama `10 \u003C= 5` bernilai `False` sehingga looping dinyatakan selesai bahkan sebelum dimulai.\n\n## WHILE Loop dan Infinite Loop\n\nSeperti yang kita tahu bahwa `while` loop ini dikendalikan oleh kondisi boolean. Nah, apa jadinya jika kondisinya selalu bernilai `True`? Untuk percobaan, kita akan coba modifikasi kode sebelumnya menjadi seperti ini.\n\n```python\ni = 1\nwhile i \u003C= 5:\n  print(i)\n```\n\nCukup hapus `i += 1` lalu jalankan dan lihat apa yang terjadi.\n\nNanti angka 1 akan tercetak banyak sekali. Keren kan 😎. Sampai kapan akan dicetak?? Selamanya huahaha.\n\nTenang, untuk menghentikan tinggal pencet `ctrl + c` atau sekalian close aja programnya hehe.\n\nInilah yang disebut dengan ***infinite loop*** atau perulangan tanpa batas. Penyebabnya adalah kondisi `while` yang selalu bernilai `True` yaitu `1 \u003C= 5`.\n\nInfinite loop ini bisa menjadi masalah serius kalau terjadi diluar dugaan. Perulangan terus menerus akan menyebabkan program berhenti mengeksekusi kode yang lainnya karena sibuk mengerjakan perulangan.\n\nWalaupun begitu, ada beberapa kasus yang mengharuskan kita menggunakan infinite loop, contohnya ketika membuat game.\n\n## WHILE Loop dan List\n\nAda hal unik pada Python, yaitu jika kita memasukkan List kosong (`[]`) sebagai nilai boolean maka secara otomatis akan dievaluasi menjadi `False`. Nah ini bisa kita manfaatkan sebagai kondisi pada `while` loop.\n\nMari kita lihat contoh kode berikut:\n\n```python\nbuah = [\"apel\", \"pisang\", \"jeruk\", \"semangka\", \"anggur\"]\n\nwhile buah:\n  print(\"Aku mau makan\", buah.pop())\n```\n\nJika dijalankan maka outputnya akan seperti ini:\n\n```\nAku mau makan anggur\nAku mau makan semangka\nAku mau makan jeruk\nAku mau makan pisang\nAku mau makan apel\n```\n\nMengapa bisa begitu? Ini karena kita memanggil [method `pop()`](https:\u002F\u002Finvasikode.com\u002Ftipe-data-list-python\u002F#Menambah_dan_Mengurangi_Item_dalam_List) pada list `buah` untuk setiap iterasinya. Sehingga pada akhirnya list `buah` menjadi *[empty list](https:\u002F\u002Finvasikode.com\u002Ftipe-data-list-python\u002F).*\n\n## Penutup\n\nCukup sekian untuk kesempatan kali ini, semoga bermanfaat 😁.\n\nPada kesempatan selanjutnya kita akan membahas tentang perintah [break dan continue pada Python 3](https:\u002F\u002Finvasikode.com\u002Fbreak-dan-continue-pada-python\u002F).\n\nSee ya.. 👋\n","\u003Cp>Berbeda dengan \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ffor-loop-python\u002F\">perulangan \u003Ccode>for\u003C\u002Fcode>\u003C\u002Fa> yang sudah diketahui kapan mulai dan kapan selesainya, pada perulangan \u003Ccode>while\u003C\u002Fcode> kita akan menggunakan \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ftipe-data-boolean-python\u002F\">kondisi boolean\u003C\u002Fa> sebagai pengendalinya.\u003C\u002Fp>\n\u003Cp>Kira-kira apa yang membuat \u003Ccode>while\u003C\u002Fcode> loop lebih dari \u003Ccode>for\u003C\u002Fcode> loop? kapan harus menggunakan \u003Ccode>while\u003C\u002Fcode> loop? dan bagaimana cara membuatnya? Mari kita bahas lebih lanjut.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Ingin tahu konsep \u003Ccode>while\u003C\u002Fcode> loop dijelaskan tanpa harus ngoding? Silahkan lihat penjelasan tentang \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fstruktur-kontrol\u002F#WHILE_loop\">Konsep Struktur Kontrol pada Pemrograman\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"struktur-while-loop-pada-python\">Struktur WHILE Loop pada Python\u003C\u002Fh2>\n\u003Cp>Pada umumnya struktur \u003Ccode>while\u003C\u002Fcode> loop cukup sederhana, bahkan di bahasa pemrograman lain juga. Berikut ini strukturnya pada Python\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"while%20%3Ckondisi%3E%3A%0A%20%20%3Cperintah%3E\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>while &lt;kondisi&gt;:\n  &lt;perintah&gt;\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Dengan:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>kondisi\u003C\u002Fcode>: \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fstruktur-kontrol\u002F#Tentang_Kondisi_Boolean\">ekspresi boolean\u003C\u002Fa> yang akan dievaluasi sebagai pengendali perulangan\u003C\u002Fli>\n\u003Cli>\u003Ccode>perintah\u003C\u002Fcode>: satu atau beberapa perintah yang akan dijalankan\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"bagaimana-while-loop-bekerja\">Bagaimana WHILE Loop Bekerja?\u003C\u002Fh2>\n\u003Cp>JIka pada \u003Ccode>for\u003C\u002Fcode> loop jumlah iterasi sudah ditentukan di awal, pada \u003Ccode>while\u003C\u002Fcode> loop kita tidak perlu mendeklarasikan jumlah iterasinya, sebagai gantinya kita perlu menggunakan kondisi boolean sebagai pengendali perulangan.\u003C\u002Fp>\n\u003Cp>Perulangan \u003Ccode>while\u003C\u002Fcode> akan terus berjalan ketika kondisi bernilai \u003Ccode>True\u003C\u002Fcode>, dan hanya berhenti ketika kondisi bernilai \u003Ccode>False\u003C\u002Fcode> atau ada pemanggilan perintah \u003Ccode>break\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Coba jalankan kode Python di bawah ini:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"i%20%3D%201%0Awhile%20i%20%3C%3D%205%3A%0A%20%20print(i)%0A%20%20i%20%2B%3D%201\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 1\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">&#x3C;=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 5\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(i)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">+=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Jika dijalankan maka akan keluar bilangan 1 sampai 5. Kira-kira apa yang terjadi pada kode tersebut? mari kita bahas satu per satu.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Pada awalnya variable \u003Ccode>i\u003C\u002Fcode> bernilai 1. Selanjutnya kita masuk ke \u003Ccode>while\u003C\u002Fcode> statement yang akan mengevaluasi apakah nilai \u003Ccode>i\u003C\u002Fcode> saat ini kurang dari sama dengan 5. Karena \u003Ccode>1 &lt;= 5\u003C\u002Fcode> maka kondisi bernilai \u003Ccode>True\u003C\u002Fcode> sehingga perintah pada baris 3 dan 4 akan dieksekusi. Pada baris ke-3 kita mencetak nilai \u003Ccode>i\u003C\u002Fcode>, pada baris ke-4 kita menambahkan nilai \u003Ccode>i\u003C\u002Fcode> dengan 1 sehingga sekarang nilai \u003Ccode>i\u003C\u002Fcode> adalah 2.\u003C\u002Fli>\n\u003Cli>Ketika semua perintah dalam loop telah dijalankan maka alur program akan kembali lagi ke pengecekan kondisi \u003Ccode>while\u003C\u002Fcode>. Sekarang nilai \u003Ccode>i\u003C\u002Fcode> adalah 2 sehingga kondisi tetap bernilai \u003Ccode>True\u003C\u002Fcode> dan perintah kembali dijalankan. Nilai \u003Ccode>i\u003C\u002Fcode> akan dicetak dan ditambah dengan 1 hingga sekarang bernilai 3.\u003C\u002Fli>\n\u003Cli>Begitu seterusnya sampai \u003Ccode>i\u003C\u002Fcode> bernilai 6. Ketika \u003Ccode>i\u003C\u002Fcode> bernilai 6 maka kondisi akan bernilai \u003Ccode>False\u003C\u002Fcode> karena \u003Ccode>6 &lt;= 5\u003C\u002Fcode> adalah salah. Ketika itu perintah dalam perulangan tidak akan dieksekusi dan looping dinyatakan selesai.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Sekarang bagaimana jika kodenya diubah menjadi begini:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"i%20%3D%2010%0Awhile%20i%20%3C%3D%205%3A%0A%20%20print(i)%0A%20%20i%20%2B%3D%201\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 10\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">&#x3C;=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 5\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(i)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">+=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Coba jalankan, pasti tidak akan keluar apa-apa. Ini karena pada pengecekan kondisi \u003Ccode>while\u003C\u002Fcode> yang pertama \u003Ccode>10 &lt;= 5\u003C\u002Fcode> bernilai \u003Ccode>False\u003C\u002Fcode> sehingga looping dinyatakan selesai bahkan sebelum dimulai.\u003C\u002Fp>\n\u003Ch2 id=\"while-loop-dan-infinite-loop\">WHILE Loop dan Infinite Loop\u003C\u002Fh2>\n\u003Cp>Seperti yang kita tahu bahwa \u003Ccode>while\u003C\u002Fcode> loop ini dikendalikan oleh kondisi boolean. Nah, apa jadinya jika kondisinya selalu bernilai \u003Ccode>True\u003C\u002Fcode>? Untuk percobaan, kita akan coba modifikasi kode sebelumnya menjadi seperti ini.\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"i%20%3D%201%0Awhile%20i%20%3C%3D%205%3A%0A%20%20print(i)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 1\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">&#x3C;=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 5\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(i)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Cukup hapus \u003Ccode>i += 1\u003C\u002Fcode> lalu jalankan dan lihat apa yang terjadi.\u003C\u002Fp>\n\u003Cp>Nanti angka 1 akan tercetak banyak sekali. Keren kan 😎. Sampai kapan akan dicetak?? Selamanya huahaha.\u003C\u002Fp>\n\u003Cp>Tenang, untuk menghentikan tinggal pencet \u003Ccode>ctrl + c\u003C\u002Fcode> atau sekalian close aja programnya hehe.\u003C\u002Fp>\n\u003Cp>Inilah yang disebut dengan \u003Cem>\u003Cstrong>infinite loop\u003C\u002Fstrong>\u003C\u002Fem> atau perulangan tanpa batas. Penyebabnya adalah kondisi \u003Ccode>while\u003C\u002Fcode> yang selalu bernilai \u003Ccode>True\u003C\u002Fcode> yaitu \u003Ccode>1 &lt;= 5\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Infinite loop ini bisa menjadi masalah serius kalau terjadi diluar dugaan. Perulangan terus menerus akan menyebabkan program berhenti mengeksekusi kode yang lainnya karena sibuk mengerjakan perulangan.\u003C\u002Fp>\n\u003Cp>Walaupun begitu, ada beberapa kasus yang mengharuskan kita menggunakan infinite loop, contohnya ketika membuat game.\u003C\u002Fp>\n\u003Ch2 id=\"while-loop-dan-list\">WHILE Loop dan List\u003C\u002Fh2>\n\u003Cp>Ada hal unik pada Python, yaitu jika kita memasukkan List kosong (\u003Ccode>[]\u003C\u002Fcode>) sebagai nilai boolean maka secara otomatis akan dievaluasi menjadi \u003Ccode>False\u003C\u002Fcode>. Nah ini bisa kita manfaatkan sebagai kondisi pada \u003Ccode>while\u003C\u002Fcode> loop.\u003C\u002Fp>\n\u003Cp>Mari kita lihat contoh kode berikut:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"buah%20%3D%20%5B%22apel%22%2C%20%22pisang%22%2C%20%22jeruk%22%2C%20%22semangka%22%2C%20%22anggur%22%5D%0A%0Awhile%20buah%3A%0A%20%20print(%22Aku%20mau%20makan%22%2C%20buah.pop())\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">buah \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> [\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"apel\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"pisang\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"jeruk\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"semangka\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"anggur\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> buah:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Aku mau makan\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, buah.pop())\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Jika dijalankan maka outputnya akan seperti ini:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Aku%20mau%20makan%20anggur%0AAku%20mau%20makan%20semangka%0AAku%20mau%20makan%20jeruk%0AAku%20mau%20makan%20pisang%0AAku%20mau%20makan%20apel\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Aku mau makan anggur\nAku mau makan semangka\nAku mau makan jeruk\nAku mau makan pisang\nAku mau makan apel\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Mengapa bisa begitu? Ini karena kita memanggil \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ftipe-data-list-python\u002F#Menambah_dan_Mengurangi_Item_dalam_List\">method \u003Ccode>pop()\u003C\u002Fcode>\u003C\u002Fa> pada list \u003Ccode>buah\u003C\u002Fcode> untuk setiap iterasinya. Sehingga pada akhirnya list \u003Ccode>buah\u003C\u002Fcode> menjadi \u003Cem>\u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ftipe-data-list-python\u002F\">empty list\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch2 id=\"penutup\">Penutup\u003C\u002Fh2>\n\u003Cp>Cukup sekian untuk kesempatan kali ini, semoga bermanfaat 😁.\u003C\u002Fp>\n\u003Cp>Pada kesempatan selanjutnya kita akan membahas tentang perintah \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fbreak-dan-continue-pada-python\u002F\">break dan continue pada Python 3\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>See ya.. 👋\u003C\u002Fp>\n","",[221,235,248,261,274,295],{"id":222,"title":223,"title_en":21,"slug":224,"excerpt":225,"excerpt_en":21,"has_translation":15,"published_at":226,"reading_time":227,"hidden_from_listing":15,"tags":228,"thumbnail_image":21,"og_image":230,"series":231,"authors":232},133,"Python Strings: the Badge That Only Worked for One Name","python-strings","The badge script printed the right name for the person who wrote it and the wrong name for everybody else. Slicing counts characters, and a name is words.","2026-10-28T13:00:00.000Z",6,[83,229],"string","\u002Fog\u002Fpython-strings.png",{"id":207,"title":208,"title_en":209,"slug":210},[233],{"authors_id":234},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":236,"title":237,"title_en":21,"slug":238,"excerpt":239,"excerpt_en":21,"has_translation":15,"published_at":240,"reading_time":227,"hidden_from_listing":15,"tags":241,"thumbnail_image":21,"og_image":243,"series":244,"authors":245},132,"Python Tuples: Why All Three Points Are the Same Point","python-tuples","Three points walk into a loop and come out identical. The list was never copied three times; the name was. A tuple makes that bug impossible.","2026-10-28T12:00:00.000Z",[83,242],"tuple","\u002Fog\u002Fpython-tuples.png",{"id":207,"title":208,"title_en":209,"slug":210},[246],{"authors_id":247},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":249,"title":250,"title_en":21,"slug":251,"excerpt":252,"excerpt_en":21,"has_translation":15,"published_at":253,"reading_time":227,"hidden_from_listing":15,"tags":254,"thumbnail_image":21,"og_image":256,"series":257,"authors":258},131,"Python Sets: the Duplicate That Keeps Coming Back","python-sets","A de-duplication loop that works on clean data leaves four tags where there should be two. The bug is case, and the fix is a `set`.","2026-10-28T11:00:00.000Z",[83,255],"set","\u002Fog\u002Fpython-sets.png",{"id":207,"title":208,"title_en":209,"slug":210},[259],{"authors_id":260},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":262,"title":263,"title_en":21,"slug":264,"excerpt":265,"excerpt_en":21,"has_translation":15,"published_at":266,"reading_time":227,"hidden_from_listing":15,"tags":267,"thumbnail_image":21,"og_image":269,"series":270,"authors":271},130,"Python Dictionaries: the Key That Isn't There","python-dictionary","A word counter dies the first time it meets a word twice. The fix is one line; what takes longer is knowing which of a dict's three lookups to reach for.","2026-10-28T10:00:00.000Z",[83,268],"dictionary","\u002Fog\u002Fpython-dictionary.png",{"id":207,"title":208,"title_en":209,"slug":210},[272],{"authors_id":273},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":275,"title":276,"title_en":277,"slug":278,"excerpt":279,"excerpt_en":280,"has_translation":12,"published_at":281,"reading_time":14,"hidden_from_listing":15,"tags":282,"thumbnail_image":21,"og_image":289,"series":290,"authors":292},129,"Biar RAG nggak kena 504: pisahin jalur query dan ingestion","So Your RAG Stops Hitting 504: Split the Query Path From Ingestion","rag-pisah-jalur-query-dan-ingestion","Satu service RAG yang merangkap parsing dan menjawab kueri bakal tumbang pas ada yang upload PDF 200 halaman. Obatnya dua jalur dan satu queue.","One RAG service that both parses uploads and answers queries will fall over the moment someone uploads a 200-page PDF. The cure is two paths and one queue.","2026-10-22T01:30:00.000Z",[283,284,285,286,287,288],"rag","cloud-run","cloud-tasks","gcp","serverless","arsitektur","\u002Fog\u002Frag-pisah-jalur-query-dan-ingestion.png",{"id":291,"title":35,"title_en":36,"slug":37},8,[293],{"authors_id":294},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},{"id":296,"title":297,"title_en":298,"slug":299,"excerpt":300,"excerpt_en":301,"has_translation":12,"published_at":302,"reading_time":227,"hidden_from_listing":15,"tags":303,"thumbnail_image":21,"og_image":310,"series":311,"authors":312},128,"Linear atau graf: cara mengatur banyak agent tanpa loop abadi","Linear or Graph: How to Run Many Agents Without an Eternal Loop","multi-agen-linear-atau-grafik","Satu agent dengan dua puluh tool gampang kacau. Begitu beberapa agent saling revisi, kamu butuh graf yang mendukung cycle dan angka yang membuatnya berhenti.","One agent with twenty tools gets messy fast. Once several agents revise each other, you need a graph that allows cycles and a number that makes it stop.","2026-10-21T16:05:00.000Z",[304,305,306,307,308,309],"multi-agent","langgraph","autogen","orkestrasi","checkpoint","llm","\u002Fog\u002Fmulti-agen-linear-atau-grafik.png",{"id":291,"title":35,"title_en":36,"slug":37},[313],{"authors_id":314},{"id":112,"name":113,"slug":114,"role":115,"profile_picture":21},[316,320,323,326,329],{"text":317,"depth":318,"id":319},"Struktur WHILE Loop pada Python",2,"struktur-while-loop-pada-python",{"text":321,"depth":318,"id":322},"Bagaimana WHILE Loop Bekerja?","bagaimana-while-loop-bekerja",{"text":324,"depth":318,"id":325},"WHILE Loop dan Infinite Loop","while-loop-dan-infinite-loop",{"text":327,"depth":318,"id":328},"WHILE Loop dan List","while-loop-dan-list",{"text":330,"depth":318,"id":331},"Penutup","penutup",1793295835041]