Membuat Password Generator Menggunakan Python – pesonainformatika.com, tidak bosan bosan membahas bahasa pemrograman python, dan pastinya kita akan belajar studi kasus baru, kali ini kita akan membuat program password generator sederhana menggunakan python simak caranya disini
Deskripsi Kasus
untuk membuat password tentu harus sedikit rumit paling simple menggunakan kombinasi antara huruf dengan angka, bayangkan jika kamu harus membuat password untuk 10 akun, mungkin masih bisa tapi bagaimana jika 100 akun pasti membosankan dan ribet, bagaimana cara cepat memecahkan masalah tersebut
Membuat Program
okay kali ini masuk ke step membuat program, pastikan sudah menginstall python dan menggunakan text editor, untuk langkah pertama buat file misal main.py kemudian isi seperti ini
data_dict = { 'username': ['pery', 'bayu', 'fajar', 'iqbal'] } def passMaker(dict_keys): password_list = [] username_list = [] for username in dict_keys: generate_password = sum(ord(c) for c in username) password_list.append(f"{username}{generate_password}") username_list.append(username) # append result named_dict = { "username": username_list, "generate_password": password_list } return named_dict print(passMaker(data_dict['username']))
jika dijalankan hasilnya akan seperti ini
Penjelasan Program
setelah berhasil running, kali ini kita akan bahas bagaimana si program bisa running dan apa sebabnya bisa menghasilkan password dengan angka yang berbeda pada tiap kata kita akan kupas tuntas disini
pertama kita mempunyai data berbentuk list namun disini pada kasus ini datanya berbentuk dictionary seperti ini
data_dict = { 'username': ['pery', 'bayu', 'fajar', 'iqbal'] }
kemudian kita membuat fungsi misal passMaker dengan parameter berupa list seperti ini
def passMaker(dict_keys): pass
disini parameter dict_keys harus berupa list
kemudian kita tambahkan dua list kosong untuk menampung data username dan hasil password yang sudah dibuat seperti ini
password_list = [] username_list = []
kemudian karena parameter fungsi passMaker yaitu dict_keys berupa list maka kita dapat melakukan looping pada parameter tersebut dan membuat password generator dengan cara menghitung berapa jumlah karakter ASCII pada setiap string yang di input, kemudian kita tambahkan string yang sudah ditambahkan jumlah karakter ASCII dengan string (yang belum dihitung) kedalam list password_list
for username in dict_keys: generate_password = sum(ord(c) for c in username) password_list.append(f"{username}{generate_password}")
tambahkan juga username yang tadi di loop ke dalam list username_list
username_list.append(username)
setelah kedua list tersebut berisi data yang sudah di hitung di looping tadi kita dapat mengelopmpokannya kedalam dictionary baru kemudian di return
named_dict = { "username": username_list, "generate_password": password_list }
return named_dict
kemudian kita dapat memanggil fungsinya seperti ini
print(passMaker(data_dict['username']))
hasilnya seperti digambar yaitu seperti ini
{'username': ['pery', 'bayu', 'fajar', 'iqbal'], 'generate_password': ['pery448', 'bayu433', 'fajar516', 'iqbal521']}
Kreasikan Program
kita dapat menambahkan beberapa fungsi dari program kita dapat menambahkan enkripsi pada password yang telah kita generate menggunakan modul bcrypt di python, kita install dulu menggunakan pip
data_dict = { 'username': ['pery', 'bayu', 'fajar', 'iqbal'] } 0
setelah itu kita membuat enkripsi seperti ini
data_dict = { 'username': ['pery', 'bayu', 'fajar', 'iqbal'] } 1
kemudian kita tampung di list kita buat list baru buat menampung enkripsi password misalnya encrypted_password
data_dict = { 'username': ['pery', 'bayu', 'fajar', 'iqbal'] } 2
kemudian kita terapkan di program kita seperti ini
data_dict = { 'username': ['pery', 'bayu', 'fajar', 'iqbal'] } 3
kemudian coba jalankan programnya hasilnya menjadi seperti ini
gimana cukup mudah bukan, sampai sini dulu studi kasus kali ini semoga bermanfaat dan selamat mencoba, soure code dapat diakses melalui github ikuti terus pesonainformatika, dan dapatkan studi kasus bahasa pemrograman lainya seperti Java, Python C++
Generator memudahkan kita membuat iterasi dalam Python dan menghasilkan kode lebih sedikit. Tutorial ini akan mengenalkan kamu pada Python Generator, keuntungannya, dan bagaimana mereka bekerja.
Dasar
Sebuah generator adalah fungsi yang mengembalikan objek generator yang bisa kita panggil method next(), sedemikian rupa sehingga setiap pemanggilan mengembalikan nilai berikutnya. Fungsi normal pada Python menggunakan keyword 229 untuk mengembalikan suatu nilai, tapi generator menggunakan keyword 230 untuk mengembalikan nilai. Ini berarti setiap fungsi Python yang berisi adalah fungsi generator.
Statement 230 biasanya menghentikan fungsi dan menyimpan state lokal agar bisa dilanjutkan tepat seperti saat dihentikan. Fungsi generator bisa memiliki satu atau lebih statement 230.
Sebuah generator juga merupakan sebuah iterator, tapi apa itu iterator? Sebelum kita membahas detail generator, saya rasa penting untuk mengetahui apa itu iterator karena merupakakn bagian penting dari diskusi ini.
Iterator Python
Sebuah iterator Python adalah kelas yang mendefinisikan sebuah fungsi 234. Sebagian besar objek Python bersifat iterable, artinya kamu bisa melakukan loop terhadap setiap elemen dalam objek tersebut. Contoh iterable pada Python misalnya string, list, tuple, dictionary, dan range.
Kita lihat contoh di bawah, kita melakukan loop terhadap daftar warna:
1colors= [“red”,”blue”,”yellow”] 23def my_funct(): 4 for color in colors: 5 print color
Di balik layar, statement 235 akan memanggil 236 pada objek list. Lalu fungsi akan mengembalikan objek iterator yang memiliki fungsi 237, yang akan mengakses masing-masing warna, satu per satu. Saat tidak ada warna tersisa, 238 akan melempar exception 239, yang akan menginformasikan loop 235 untuk berhenti.
Mengiterasi sebuah Dictionary
1colors= [“red”,”blue”,”yellow”] 02colors= [“red”,”blue”,”yellow”] 23colors= [“red”,”blue”,”yellow”] 445colors= [“red”,”blue”,”yellow”] 7colors= [“red”,”blue”,”yellow”] 8colors= [“red”,”blue”,”yellow”] 920212223
Mengiterasi Baris dalam file CSV
1252328430532colors= [“red”,”blue”,”yellow”] 834
Mengiterasi String
1362383def my_funct(): 04def my_funct(): 25colors= [“red”,”blue”,”yellow”] 7colors= [“red”,”blue”,”yellow”] 820def my_funct(): 722def my_funct(): 9404142def my_funct(): 9444546474849 for color in colors: 0 for color in colors: 1 for color in colors: 245 for color in colors: 4 for color in colors: 5
Keuntungan Menggunakan Generator
Mari kita bahas beberapa keuntungan menggunakan generator dibanding iterator:
Mudah untuk diimplementasi
Membuat iterator pada Python memerlukan kamu untuk mengimplementasi kelas dengan fungsi 234 dan 237 dan menangani semua error 239 yang mungkin muncul.
1 for color in colors: 72 for color in colors: 9351453555colors= [“red”,”blue”,”yellow”] 8205822 print color 04042 print color 344 print color 546 print color 748 print color 9 for color in colors: 011
Seperti yang kamu lihat di atas, implementasinya sangat panjang. Semua beban ini secara otomatis ditangani oleh generator.
Penggunaan Memory Lebih Sedikit
Generator membantu meminimalkan penggunaan memory, terutama saat berurusan dengan set data yang besar, karena generator hanya akan mengembalikan objek satu per satu.
Performa dan Optimasi yang Lebih Baik
Generator pada dasarnya pemalas. Ini artinya mereka hanya menghasilkan nilai saat dibutuhkan saja. Tidak seperti iterator biasa, di mana semua nilai dihasilkan tidak peduli apakah mereka akan digunakan atau tidak, generator hanya menghasilkan nilai yang dibutuhkan. Inilah yang mendorong program untuk bekerja lebih cepat.
Bagaimana membuat Generator pada Python
Membuat generator sangat mudah. Yang perlu kamu lakukan hanyalah menulis fungsi biasa, tapi dengan statement 230, bukan 229, seperti pada contoh di bawah.
113215
Statement 229 menghentikan fungsi sepenuhnya, sedangkan 230 hanya menghentikan fungsi sampai dipanggil kembali oleh fungsi 248.
Contohnya, program di bawah menggunakan statement 230 dan 248.
1172193colors= [“red”,”blue”,”yellow”] 014colors= [“red”,”blue”,”yellow”] 035colors= [“red”,”blue”,”yellow”] 05colors= [“red”,”blue”,”yellow”] 8colors= [“red”,”blue”,”yellow”] 0720colors= [“red”,”blue”,”yellow”] 092240colors= [“red”,”blue”,”yellow”] 1242colors= [“red”,”blue”,”yellow”] 124446colors= [“red”,”blue”,”yellow”] 17
Bagaimana Generator Python Bekerja
Kita lihat bagaimana generator bekerja. Lihat contoh di bawah.
1colors= [“red”,”blue”,”yellow”] 1923174colors= [“red”,”blue”,”yellow”] 245colors= [“red”,”blue”,”yellow”] 01colors= [“red”,”blue”,”yellow”] 8colors= [“red”,”blue”,”yellow”] 0520colors= [“red”,”blue”,”yellow”] 0322colors= [“red”,”blue”,”yellow”] 3240colors= [“red”,”blue”,”yellow”] 0742colors= [“red”,”blue”,”yellow”] 364446colors= [“red”,”blue”,”yellow”] 1248colors= [“red”,”blue”,”yellow”] 12 for color in colors: 0colors= [“red”,”blue”,”yellow”] 12 for color in colors: 2colors= [“red”,”blue”,”yellow”] 17
Pada fungsi di atas, kita mendefinisikan generator bernama 251, yang menerima argumen 252 berupa list. Lalu kita definisikan variabel 253 dan mengatur nilainya menjadi nol. Selain itu, kita melakukan loop ke setiap elemen pada list dan menambahkannya ke variabel total.
Lalu kita buat instance 254 dan panggil fungsi 248. Ini akan menjalankan kode sampai berhenti pada nilai pertama dari 253, yang saat ini bernilai 257. Fungsi akan menyimpan nilai variabel total sampai berikutnya fungsi dipanggil. Tidak seperti statement 229 biasa, yang akan mengembalikan semua nilai sekaligus, generator akan melanjutkan dari yang terakhir diproses.
Di bawah ini adalah nilai-nilai berikutnya.
1colors= [“red”,”blue”,”yellow”] 1923174colors= [“red”,”blue”,”yellow”] 245colors= [“red”,”blue”,”yellow”] 01colors= [“red”,”blue”,”yellow”] 8colors= [“red”,”blue”,”yellow”] 0320colors= [“red”,”blue”,”yellow”] 0522colors= [“red”,”blue”,”yellow”] 3240colors= [“red”,”blue”,”yellow”] 0742colors= [“red”,”blue”,”yellow”] 364446colors= [“red”,”blue”,”yellow”] 1248colors= [“red”,”blue”,”yellow”] 12 for color in colors: 0colors= [“red”,”blue”,”yellow”] 12 for color in colors: 2colors= [“red”,”blue”,”yellow”] 17 for color in colors: 4colors= [“red”,”blue”,”yellow”] 75colors= [“red”,”blue”,”yellow”] 76colors= [“red”,”blue”,”yellow”] 77colors= [“red”,”blue”,”yellow”] 78colors= [“red”,”blue”,”yellow”] 79colors= [“red”,”blue”,”yellow”] 80colors= [“red”,”blue”,”yellow”] 81colors= [“red”,”blue”,”yellow”] 82
Jika kamu coba panggil fungsi setelah loop selesai, kamu akan mendapatkan error 259.
259 dilempar oleh fungsi 248 untuk menandai bahwa tidak ada objek yang dihasilkan oleh iterator.
1colors= [“red”,”blue”,”yellow”] 842colors= [“red”,”blue”,”yellow”] 863colors= [“red”,”blue”,”yellow”] 8845colors= [“red”,”blue”,”yellow”] 91colors= [“red”,”blue”,”yellow”] 8colors= [“red”,”blue”,”yellow”] 9320colors= [“red”,”blue”,”yellow”] 95
Contoh 2
Pada contoh ini, kita akan lihat bagaimana cara menggunakan beberapa statement yield dalam sebuah fungsi.
1colors= [“red”,”blue”,”yellow”] 972320042025204colors= [“red”,”blue”,”yellow”] 820620colors= [“red”,”blue”,”yellow”] 17222104021242214442144621448 for color in colors: 0colors= [“red”,”blue”,”yellow”] 75 for color in colors: 2 for color in colors: 4224colors= [“red”,”blue”,”yellow”] 76226colors= [“red”,”blue”,”yellow”] 77228
Fungsi normal mengambalikan semua nilai saat fungsi tersebut dipanggil, sedangkan generator menunggu sampai fungsi 248 dipanggil kembali. Begitu 248 dipanggil, fungsi warna melanjutkan dari titik terakhir fungsi tersebut berhenti.
Kesimpulan
Generator sangat efisien dalam menggunakank memory, terutama saat berkerja dengan daftar atau objek yang sangat besar. Ini karena kamu bisa menggunakan yield untuk mengerjakan bagian lebih kecil dibanding menyimpan semua data dalam memory sekaligus.