[{"data":1,"prerenderedAt":208},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-perulangan-dengan-while-loop-pada-python-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":138,"renderedTakeaway":139,"latestArticles":140,"toc":191},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":55,"takeway":56,"body":57,"authors":58,"series":64},"94","Perulangan dengan WHILE Loop pada Python","perulangan-dengan-while-loop-pada-python","Berbeda dengan perulangan for, dengan while kita akan menggunakan kondisi boolean sebagai pengendalinya.","2021-07-21T03:52:03.000Z",{"id":49},"a3d2cf83-8fff-4592-a62f-0d91d9a7b054",[51,52,53,54],"python","perulangan","loop","struktur-kontrol",4,null,"Berbeda dengan [perulangan `for`](https://invasikode.com/for-loop-python/) yang sudah diketahui kapan mulai dan kapan selesainya, pada perulangan `while` kita akan menggunakan [kondisi boolean](https://invasikode.com/tipe-data-boolean-python/) 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://invasikode.com/struktur-kontrol/#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://invasikode.com/struktur-kontrol/#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://invasikode.com/tipe-data-list-python/#Menambah_dan_Mengurangi_Item_dalam_List) pada list `buah` untuk setiap iterasinya. Sehingga pada akhirnya list `buah` menjadi *[empty list](https://invasikode.com/tipe-data-list-python/).*\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://invasikode.com/break-dan-continue-pada-python/).\n\nSee ya.. 👋",[59],{"authors_id":60},{"name":61,"slug":62,"role":63,"profile_picture":56},"Daffa Izzuddin","izzudd","Writer",{"id":65,"title":66,"slug":67,"articles":68,"parent_series":116},"19","Struktur Kontrol","python-struktur-kontrol",[69,78,86,89,97,106],{"id":70,"title":71,"slug":72,"excerpt":73,"thumbnail_image":74,"tags":76},"92","Percabangan dengan IF, ELIF, ELSE pada Python","percabangan-dengan-if-elif-else-pada-python","Conditional statement bertugas untuk menjalankan perintah sesuai kondisi. Pada python, hal ini ditangani oleh if statement.",{"id":75},"1d91ec3b-2446-49fd-82e3-e3446468b70a",[51,77,54],"percabangan",{"id":79,"title":80,"slug":81,"excerpt":82,"thumbnail_image":83,"tags":85},"93","Perulangan dengan FOR Loop pada Python","perulangan-dengan-for-loop-pada-python","for loop merupakan perulangan yang sudah diketahui kapan mulainya dan kapan selesainya.",{"id":84},"930bed49-dd1d-4707-85be-e6b774b65505",[51,52,53,54],{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":87,"tags":88},{"id":49},[51,52,53,54],{"id":90,"title":91,"slug":92,"excerpt":93,"thumbnail_image":94,"tags":96},"95","Statement BREAK dan CONTINUE pada Python","statement-break-dan-continue-pada-python","Python memiliki statement break dan continue untuk mengatasi kasus-kasus khusus pada struktur kontrol.",{"id":95},"cd09cb1e-7ef2-49a0-bf0a-03ff8c377577",[51,52,53,54],{"id":98,"title":99,"slug":100,"excerpt":101,"thumbnail_image":102,"tags":104},"96","Percabangan dengan Ternary Operator pada Python","percobangan-dengan-ternary-operator-pada-python","Pada Python ternary operator untuk mempersingkat assignment yang melibatkan kondisi IF ELSE.",{"id":103},"9bfe4ceb-53ed-43e0-99f6-af44c65ed13b",[51,77,105,54],"operator",{"id":107,"title":108,"slug":109,"excerpt":110,"thumbnail_image":111,"tags":113},"97","List Comprehension Pada Pyhton","list-comprehension-pada-pyhton","list comprehension merupakan ternary operator pada Python untuk mempersingkat proses inisialisasi variable list",{"id":112},"5e8d4c5d-5506-4852-997d-deaa9f979fb5",[51,114,115],"list","list-comprehension",{"id":117,"title":32,"slug":33,"parent_series":118,"children_series":120},"10",{"id":119,"title":22,"slug":23,"parent_series":56},"1",[121,125,129,133,134],{"id":122,"title":123,"slug":124,"cover_image":56},"16","Berkenalan dengan Bahasa Python","python-intro",{"id":126,"title":127,"slug":128,"cover_image":56},"17","Variabel, Tipe Data, dan Operasi","python-variabel-tipe-data",{"id":130,"title":131,"slug":132,"cover_image":56},"18","Menggunakan Script Python","python-pemrograman-dengan-script",{"id":65,"title":66,"slug":67,"cover_image":56},{"id":135,"title":136,"slug":137,"cover_image":56},"20","Pemrograman Fungsional dengan Python","python-pemrograman-fungsional","\u003Cp>Berbeda dengan \u003Ca href=\"https://invasikode.com/for-loop-python/\">perulangan \u003Ccode>for\u003C/code>\u003C/a> yang sudah diketahui kapan mulai dan kapan selesainya, pada perulangan \u003Ccode>while\u003C/code> kita akan menggunakan \u003Ca href=\"https://invasikode.com/tipe-data-boolean-python/\">kondisi boolean\u003C/a> sebagai pengendalinya.\u003C/p>\n\u003Cp>Kira-kira apa yang membuat \u003Ccode>while\u003C/code> loop lebih dari \u003Ccode>for\u003C/code> loop? kapan harus menggunakan \u003Ccode>while\u003C/code> loop? dan bagaimana cara membuatnya? Mari kita bahas lebih lanjut.\u003C/p>\n\u003Cblockquote>\n\u003Cp>Ingin tahu konsep \u003Ccode>while\u003C/code> loop dijelaskan tanpa harus ngoding? Silahkan lihat penjelasan tentang \u003Ca href=\"https://invasikode.com/struktur-kontrol/#WHILE_loop\">Konsep Struktur Kontrol pada Pemrograman\u003C/a>.\u003C/p>\n\u003C/blockquote>\n\u003Ch2 id=\"struktur-while-loop-pada-python\">Struktur WHILE Loop pada Python\u003C/h2>\n\u003Cp>Pada umumnya struktur \u003Ccode>while\u003C/code> loop cukup sederhana, bahkan di bahasa pemrograman lain juga. Berikut ini strukturnya pada Python\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Dengan:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>kondisi\u003C/code>: \u003Ca href=\"https://invasikode.com/struktur-kontrol/#Tentang_Kondisi_Boolean\">ekspresi boolean\u003C/a> yang akan dievaluasi sebagai pengendali perulangan\u003C/li>\n\u003Cli>\u003Ccode>perintah\u003C/code>: satu atau beberapa perintah yang akan dijalankan\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"bagaimana-while-loop-bekerja\">Bagaimana WHILE Loop Bekerja?\u003C/h2>\n\u003Cp>JIka pada \u003Ccode>for\u003C/code> loop jumlah iterasi sudah ditentukan di awal, pada \u003Ccode>while\u003C/code> loop kita tidak perlu mendeklarasikan jumlah iterasinya, sebagai gantinya kita perlu menggunakan kondisi boolean sebagai pengendali perulangan.\u003C/p>\n\u003Cp>Perulangan \u003Ccode>while\u003C/code> akan terus berjalan ketika kondisi bernilai \u003Ccode>True\u003C/code>, dan hanya berhenti ketika kondisi bernilai \u003Ccode>False\u003C/code> atau ada pemanggilan perintah \u003Ccode>break\u003C/code>.\u003C/p>\n\u003Cp>Coba jalankan kode Python di bawah ini:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 1\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> i \u003C/span>\u003Cspan style=\"color:#F97583\">&#x3C;=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 5\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(i)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  i \u003C/span>\u003Cspan style=\"color:#F97583\">+=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 1\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\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/p>\n\u003Cul>\n\u003Cli>Pada awalnya variable \u003Ccode>i\u003C/code> bernilai 1. Selanjutnya kita masuk ke \u003Ccode>while\u003C/code> statement yang akan mengevaluasi apakah nilai \u003Ccode>i\u003C/code> saat ini kurang dari sama dengan 5. Karena \u003Ccode>1 &lt;= 5\u003C/code> maka kondisi bernilai \u003Ccode>True\u003C/code> sehingga perintah pada baris 3 dan 4 akan dieksekusi. Pada baris ke-3 kita mencetak nilai \u003Ccode>i\u003C/code>, pada baris ke-4 kita menambahkan nilai \u003Ccode>i\u003C/code> dengan 1 sehingga sekarang nilai \u003Ccode>i\u003C/code> adalah 2.\u003C/li>\n\u003Cli>Ketika semua perintah dalam loop telah dijalankan maka alur program akan kembali lagi ke pengecekan kondisi \u003Ccode>while\u003C/code>. Sekarang nilai \u003Ccode>i\u003C/code> adalah 2 sehingga kondisi tetap bernilai \u003Ccode>True\u003C/code> dan perintah kembali dijalankan. Nilai \u003Ccode>i\u003C/code> akan dicetak dan ditambah dengan 1 hingga sekarang bernilai 3.\u003C/li>\n\u003Cli>Begitu seterusnya sampai \u003Ccode>i\u003C/code> bernilai 6. Ketika \u003Ccode>i\u003C/code> bernilai 6 maka kondisi akan bernilai \u003Ccode>False\u003C/code> karena \u003Ccode>6 &lt;= 5\u003C/code> adalah salah. Ketika itu perintah dalam perulangan tidak akan dieksekusi dan looping dinyatakan selesai.\u003C/li>\n\u003C/ul>\n\u003Cp>Sekarang bagaimana jika kodenya diubah menjadi begini:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 10\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> i \u003C/span>\u003Cspan style=\"color:#F97583\">&#x3C;=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 5\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(i)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  i \u003C/span>\u003Cspan style=\"color:#F97583\">+=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 1\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Coba jalankan, pasti tidak akan keluar apa-apa. Ini karena pada pengecekan kondisi \u003Ccode>while\u003C/code> yang pertama \u003Ccode>10 &lt;= 5\u003C/code> bernilai \u003Ccode>False\u003C/code> sehingga looping dinyatakan selesai bahkan sebelum dimulai.\u003C/p>\n\u003Ch2 id=\"while-loop-dan-infinite-loop\">WHILE Loop dan Infinite Loop\u003C/h2>\n\u003Cp>Seperti yang kita tahu bahwa \u003Ccode>while\u003C/code> loop ini dikendalikan oleh kondisi boolean. Nah, apa jadinya jika kondisinya selalu bernilai \u003Ccode>True\u003C/code>? Untuk percobaan, kita akan coba modifikasi kode sebelumnya menjadi seperti ini.\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 1\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> i \u003C/span>\u003Cspan style=\"color:#F97583\">&#x3C;=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 5\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(i)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Cukup hapus \u003Ccode>i += 1\u003C/code> lalu jalankan dan lihat apa yang terjadi.\u003C/p>\n\u003Cp>Nanti angka 1 akan tercetak banyak sekali. Keren kan 😎. Sampai kapan akan dicetak?? Selamanya huahaha.\u003C/p>\n\u003Cp>Tenang, untuk menghentikan tinggal pencet \u003Ccode>ctrl + c\u003C/code> atau sekalian close aja programnya hehe.\u003C/p>\n\u003Cp>Inilah yang disebut dengan \u003Cem>\u003Cstrong>infinite loop\u003C/strong>\u003C/em> atau perulangan tanpa batas. Penyebabnya adalah kondisi \u003Ccode>while\u003C/code> yang selalu bernilai \u003Ccode>True\u003C/code> yaitu \u003Ccode>1 &lt;= 5\u003C/code>.\u003C/p>\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/p>\n\u003Cp>Walaupun begitu, ada beberapa kasus yang mengharuskan kita menggunakan infinite loop, contohnya ketika membuat game.\u003C/p>\n\u003Ch2 id=\"while-loop-dan-list\">WHILE Loop dan List\u003C/h2>\n\u003Cp>Ada hal unik pada Python, yaitu jika kita memasukkan List kosong (\u003Ccode>[]\u003C/code>) sebagai nilai boolean maka secara otomatis akan dievaluasi menjadi \u003Ccode>False\u003C/code>. Nah ini bisa kita manfaatkan sebagai kondisi pada \u003Ccode>while\u003C/code> loop.\u003C/p>\n\u003Cp>Mari kita lihat contoh kode berikut:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"apel\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"pisang\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"jeruk\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"semangka\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"anggur\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">]\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">while\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> buah:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Aku mau makan\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, buah.pop())\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Jika dijalankan maka outputnya akan seperti ini:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Mengapa bisa begitu? Ini karena kita memanggil \u003Ca href=\"https://invasikode.com/tipe-data-list-python/#Menambah_dan_Mengurangi_Item_dalam_List\">method \u003Ccode>pop()\u003C/code>\u003C/a> pada list \u003Ccode>buah\u003C/code> untuk setiap iterasinya. Sehingga pada akhirnya list \u003Ccode>buah\u003C/code> menjadi \u003Cem>\u003Ca href=\"https://invasikode.com/tipe-data-list-python/\">empty list\u003C/a>.\u003C/em>\u003C/p>\n\u003Ch2 id=\"penutup\">Penutup\u003C/h2>\n\u003Cp>Cukup sekian untuk kesempatan kali ini, semoga bermanfaat 😁.\u003C/p>\n\u003Cp>Pada kesempatan selanjutnya kita akan membahas tentang perintah \u003Ca href=\"https://invasikode.com/break-dan-continue-pada-python/\">break dan continue pada Python 3\u003C/a>.\u003C/p>\n\u003Cp>See ya.. 👋\u003C/p>\n","",[141,154,169,181],{"id":142,"title":143,"slug":144,"excerpt":145,"thumbnail_image":146,"tags":148},"46","Mengapa C Mulai Ditinggalkan: Duel Filosofi Keamanan Rust vs Kesederhanaan Zig","mengapa-c-mulai-ditinggalkan-duel-filosofi-rust-vs-zig","Pernah denger kalau sekitar 70% celah keamanan kritis software modern itu asalnya dari bahasa C? Iya, bahasa yang udah jadi fondasi internet ini 😅. Yuk, kita bedah duel filosofi Rust vs Zig dan cari tahu mana yang pas buat proyek kalian!",{"id":147},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[149,150,151,152,153],"system-programming","rust","zig","c","memory-safety",{"id":155,"title":156,"slug":157,"excerpt":158,"thumbnail_image":159,"tags":161},"45","Rate Limiting Algorithms: Token Bucket vs Leaky Bucket vs Sliding Window","rate-limiting-algorithms-token-bucket-leaky-bucket-sliding-window","Udah tahu kenapa *rate limiting* itu wajib, tapi masih bingung beda Token Bucket, Leaky Bucket, Fixed Window, dan Sliding Window? Yuk, kita adu empat algoritma ini bareng-bareng dan cari tahu mana yang paling pas buat API kalian!",{"id":160},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[162,163,164,165,166,167,168],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":170,"title":171,"slug":172,"excerpt":173,"thumbnail_image":174,"tags":176},"44","Transactional Outbox Pattern: Solusi Konsistensi Database dan Message Broker Tanpa 2PC","transactional-outbox-pattern-konsistensi-database-message-broker","Pernah nggak kalian lihat pesanan udah masuk database, tapi email konfirmasinya nggak pernah kekirim? Itu gejala *dual-write problem*. Yuk, kita bedah Transactional Outbox Pattern biar data dan *event* kalian nggak lagi berselisih paham!",{"id":175},"e3c617fd-1486-4b82-b937-94fbec846c77",[162,177,167,178,179,163,180],"microservices","database","message-broker","postgresql",{"id":182,"title":183,"slug":184,"excerpt":185,"thumbnail_image":186,"tags":188},"43","Dead Letter Queue (DLQ) & Retry Policy: Menyelamatkan Pesan Nyasar di RabbitMQ Tanpa Bikin Worker Macet","dead-letter-queue-retry-policy-rabbitmq-resilient-messaging","Pernah nggak sih, *worker* kalian nolak satu pesan terus-terusan sampai CPU melonjak 100%? Itu namanya *poison message loop*, jebakan klasik di RabbitMQ. Yuk, kita bahas cara pasang *retry policy* dan *dead letter queue* yang bener!",{"id":187},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[189,179,162,167,177,190,51],"rabbitmq","async",[192,196,199,202,205],{"text":193,"depth":194,"id":195},"Struktur WHILE Loop pada Python",2,"struktur-while-loop-pada-python",{"text":197,"depth":194,"id":198},"Bagaimana WHILE Loop Bekerja?","bagaimana-while-loop-bekerja",{"text":200,"depth":194,"id":201},"WHILE Loop dan Infinite Loop","while-loop-dan-infinite-loop",{"text":203,"depth":194,"id":204},"WHILE Loop dan List","while-loop-dan-list",{"text":206,"depth":194,"id":207},"Penutup","penutup",1791045068001]