Last active
October 16, 2021 17:20
-
-
Save galihboy/4098be912ed7f3ac0be4ebc049d07bc0 to your computer and use it in GitHub Desktop.
nama acak versi 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
@author: galih-hermawan | |
""" | |
import random | |
# fungsi untuk membangkitkan nama acak | |
# paksaGabung: True, jika ingin menggabung nama abdul dan asmaul husna, jika bisa | |
# False (atau diabaikan), jika tidak ingin digabung | |
def BangkitNama(daftar, jumlah, paksaGabung = False): | |
while True: | |
# ambil nama acak sebanyak jumlah | |
nama = random.sample(daftar, jumlah) | |
# mencari list nama anti sendiri | |
lstAntiSendiri = [i for i,n in enumerate(nama) if n in namaAntiSendiri] | |
# jika nama anti sendiri ditemukan | |
if lstAntiSendiri: | |
# indeks nama anti sendiri | |
idxAntiSendiri = lstAntiSendiri[0] | |
# jika posisi nama anti sendiri di nama paling belakang | |
if idxAntiSendiri == jumlah-1: | |
#print("abdul di indeks terakhir") | |
pass | |
# jika nama abdul ada di depan, nama belakang diganti nama asmaul husna | |
else: | |
namaAsmaulHusna = random.choice(daftarAsmaulHusna) | |
# jika nama asmaul husna dapat digabung dengan abdul | |
# dan pilihan paksa gabung : True | |
karCari = CariKarakter(namaAsmaulHusna) | |
if paksaGabung and karCari != "": | |
nama[idxAntiSendiri] = "abdu" + karCari + namaAsmaulHusna | |
while True: | |
namaPengganti = BangkitNama(daftar, 1)[0] | |
# cari nama pengganti yang belum ada di list nama | |
if namaPengganti not in nama: | |
nama[idxAntiSendiri+1] = namaPengganti | |
break | |
else: | |
nama[idxAntiSendiri+1] = namaAsmaulHusna | |
break | |
else: | |
break | |
return nama | |
# fungsi untuk memeriksa karakter/string awal nama asmaul husna | |
def CariKarakter(nama): | |
for i in range(2,0,-1): | |
try: | |
cek = nama[0:i] | |
karGabung.index(cek) | |
except ValueError: | |
hasil = "" | |
else: | |
hasil = cek | |
break | |
return hasil | |
daftarNama = ("muhammad", "abdul", "zulkarnain", "umar", "ali", "saifullah") | |
daftarAsmaulHusna = ("aziz", "jabbar", "karim", "majid", | |
"rafi\'", "rahim", "rahman", | |
"salam", "sami\'", "shabur", "shamad", "syakur") | |
namaAntiSendiri = ("abdul") | |
karGabung = ("dh", "n", "r", "s", "sh", "sy", "t", "z") | |
banyakNama = 3 # jumlah kata (nama) dalam satu string (kalimat) | |
lstNamaBaru3 = BangkitNama(daftarNama, banyakNama) | |
strNama3 = " ".join(lstNamaBaru3).title() | |
print(f"nama baru: {strNama3}") # contoh output: "Umar Abdul Salam" | |
lstNamaBaru3 = BangkitNama(daftarNama, banyakNama, True) | |
strNama3 = " ".join(lstNamaBaru3).title() | |
print(f"nama baru (gabung): {strNama3}") # contoh output: "Umar Abdussalam Ali" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment