Ejemplo n.º 1
0
def main(pengguna):
    # PROCEDURE main (input pengguna : array [0..1] of array [0..6] of string,
    #                 output tiket : Rekaman, output penggunaan : Rekaman)
    # I.S. tiket dan penggunaan abstrak
    # F.S. Jika input lolos ujian, tiket dan penggunaan akan diupdate.
    # KAMUS LOKAL
    # wahana, tiket, penggunaan: Rekaman
    # username : string
    # height, balance : integer
    # id_wahana : string
    # wahana_found : array[0..4] of string
    # date_now : string
    # tickets, owned_tickets: integer
    # cancel_use : character
    # data_penggunaan : array [0..3] of string
    # new_penggunaan, previously_bought : Rekaman.data
    # ALGORITMA
    wahana = load.use("wahana.csv")
    tiket = load.use("tiket.csv")
    penggunaan = load.use("penggunaan.csv")

    username = str(pengguna[1][aux.find_idx(pengguna, "Username")])

    # Input dan validasi ID Wahana:
    id_wahana = input("Masukkan ID wahana: ")
    wahana_found = aux.find_baris_first(wahana.data, "ID_Wahana", id_wahana)
    if wahana_found == []:
        print("Tidak ditemukan wahana dengan ID \"" + id_wahana + '\".')
        return
    wahana_name = wahana_found[aux.find_idx(wahana.data, "Nama_Wahana")]

    # Input dan validasi tanggal hari ini
    date_now = aux.input_date("Masukkan tanggal hari ini: ")

    # Input dan validasi jumlah tiket yang ingin digunakan
    tickets = int(input("Jumlah tiket yang digunakan: "))
    while tickets <= 0:
        if tickets == 0:
            cancel_use = input("Batalkan menggunakan tiket? [Y/N] ")
            while cancel_use.upper() != 'Y' or cancel_use.upper() != 'N':
                cancel_use = input(
                    "Masukan salah. Batalkan menggunakan tiket? [Y/N] ")
            if cancel_use == 'Y':
                return
            else:  # cancel_use == 'N'
                tickets = int(input("Jumlah tiket yang digunakan: "))
        else:
            tickets = int(input("Jumlah tiket harusnya bukan negatif. Mohon diulang: "))
    
    # Mengecek apakah pengguna sudah membeli tiket pada wahana

    previously_bought = aux.merge([tiket.data[0]], aux.find_baris_all(tiket.data, "Username", username))
    
    ticket_id_wahana = aux.find_baris_first(previously_bought, "ID_Wahana", id_wahana)
    
    if ticket_id_wahana == []:
        # Jika pengguna belum pernah membeli tiket di id_wahana, pengguna tidak diperbolehkan memakai tiket.
        print("Anda belum pernah membeli tiket terkait.")
        print("Alasan: Belum membeli tiket pada wahana " + wahana_name + ".")
        return

    owned_tickets = int(ticket_id_wahana[aux.find_idx(tiket.data, "Jumlah_Tiket")])

    if int(owned_tickets) < tickets:
        # Jika pengguna meminta tiket lebih banyak daripada yang sebenarnya ia punya, pengguna tidak diperbolehkan memakai tiket.
        print("Anda belum pernah membeli tiket terkait.")
        print("Alasan: Anda hanya memiliki " + str(owned_tickets) + " tiket pada wahana " + wahana_name + ".")
    else:
        # Jika pengguna memiliki tiket yang cukup pada wahana, pengguna menggunakan tiket tersebut.
        
        # File penggunaan tiket diupdate, sesuai banyak tiket yang dipakai.
        data_penggunaan = [username, date_now, id_wahana, tickets]
        new_penggunaan = aux.konsDot(penggunaan.data, data_penggunaan)
        load.store("penggunaan.csv", new_penggunaan)

        # File kepemilikan tiket diupdate, banyak tiket yang dimiliki pengguna dikurangi banyak tiket yang dipakai.
        if owned_tickets == tickets:
            # Jika pengguna kehabisan tiket pada wahana tersebut, baris tersebut dihapus.
            row_to_be_changed = aux.find_baris_idx(tiket.data, ticket_id_wahana) # Baris tiket yang ingin dihapus
            new_tiket = aux.merge(tiket.data[:row_to_be_changed], tiket.data[row_to_be_changed+1:]) # Penghapusan baris
        else:
            # Baris kepemilikan tiket pengguna diganti dengan banyak tiket baru.
            row_to_be_changed = aux.find_baris_idx(tiket.data, ticket_id_wahana) # Baris tiket yang ingin diganti
            idx_col_jml_tiket = aux.find_idx(tiket.data, "Jumlah_Tiket")
            new_tiket = tiket.data
            new_tiket[row_to_be_changed][idx_col_jml_tiket] = str(int(owned_tickets) - int(tickets)) # Penggantian baris
        load.store("tiket.csv", new_tiket)

        print("Terima kasih telah bermain.")
        print("Selamat bersenang-senang di " + wahana_name + "!")

        return
Ejemplo n.º 2
0
def main(pengguna):
    # PROCEDURE main (input pengguna : array [0..1] of array [0..6] of string
    #                 output tiket : Rekaman, output pembelian : Rekaman)
    # I.S. pembelian dan tiket abstrak
    # F.S. Jika input lolos ujian, tiket dan pembelian akan diupdate.
    # KAMUS LOKAL
    # wahana, pembelian, tiket : Rekaman
    # username, date_of_birth, role : string
    # height, balance : integer
    # id_wahana : string
    # wahana_found : array[0..4] of string
    # date_now : string
    # age : integer
    # tickets : integer
    # cancel_buy : character
    # wahana_age_group, wahana_height_group : string
    # tickets_price : integer
    # data_pembelian : array [0..3] of string
    # new_pembelian, previously_bought : Rekaman.data
    # ALGORITMA
    wahana = load.use("wahana.csv")
    pembelian = load.use("pembelian.csv")
    tiket = load.use("tiket.csv")

    username = str(pengguna[1][aux.find_idx(pengguna, "Username")])
    date_of_birth = str(pengguna[1][aux.find_idx(pengguna, "Tanggal_Lahir")])
    height = int(pengguna[1][aux.find_idx(pengguna, "Tinggi_Badan")])
    balance = int(pengguna[1][aux.find_idx(pengguna, "Saldo")])
    role = str(pengguna[1][aux.find_idx(pengguna, "Role")])

    # Input dan validasi ID Wahana
    id_wahana = input("Masukkan ID wahana: ")
    wahana_found = aux.find_baris_first(wahana.data, "ID_Wahana", id_wahana)
    if wahana_found == []:
        print("Tidak ditemukan wahana dengan ID \"" + id_wahana + '\".')
        return

    # Input dan validasi tanggal hari ini
    date_now = aux.input_date("Masukkan tanggal hari ini: ")
    age = aux.years_since_then(date_of_birth,
                               date_now)  # Menentukan umur dari pengguna

    # Input dan validasi jumlah tiket yang ingin dibeli
    tickets = int(input("Jumlah tiket yang dibeli: "))
    while tickets <= 0:
        if tickets == 0:
            cancel_buy = input("Batalkan pembelian tiket? [Y/N] ")
            while cancel_buy.upper() != 'Y' and cancel_buy.upper() != 'N':
                cancel_buy = input(
                    "Masukan salah. Batalkan pembelian tiket? [Y/N] ")
            if cancel_buy == 'Y':
                return
            else:  # cancel_buy == 'N'
                tickets = int(input("Jumlah tiket yang dibeli: "))
        else:
            tickets = int(
                input("Jumlah tiket harusnya bukan negatif. Mohon diulang: "))

    # Mengecek apakah umur pengguna sudah memenuhi batasan umur wahana.
    wahana_age_group = wahana_found[aux.find_idx(wahana.data, "Batasan_Umur")]
    # Wahana untuk anak-anak, tetapi pengguna dewasa
    if wahana_age_group == "anak-anak" and age >= 17:
        print("Batasan umur: Anak-anak (< 17 tahun)")
        print("Umur Anda: " + str(age))
        print("Anda tidak memenuhi persyaratan untuk memainkan wahana ini." +
              "\nSilakan menggunakan wahana lain yang tersedia.")
        return
    # Wahana untuk dewasa, tetapi pengguna anak-anak
    elif wahana_age_group == "dewasa" and age < 17:
        print("Batasan umur: Dewasa (>= 17 tahun)")
        print("Umur Anda: " + str(age))
        print("Anda tidak memenuhi persyaratan untuk memainkan wahana ini." +
              "\nSilakan menggunakan wahana lain yang tersedia.")
        return

    # Mengecek apakah tinggi pengguna sudah memenuhi batasan tinggi wahana.
    wahana_height_group = wahana_found[aux.find_idx(wahana.data,
                                                    "Batasan_Tinggi")]
    # Wahana untuk pemain >170cm, tetapi pengguna <=170cm.
    if wahana_height_group == ">170" and height <= 170:
        print("Anda tidak memenuhi persyaratan untuk memainkan wahana ini." +
              "\nSilakan menggunakan wahana lain yang tersedia.")
        return

    # Mengecek apakah pengguna memiliki saldo yang cukup.
    tickets_price = tickets * int(wahana_found[aux.find_idx(
        wahana.data, "Harga_Tiket")])

    # Jika pengguna adalah pemain dengan golden account, harga jadi setengah.
    if role == "Gold":
        tickets_price = round(tickets_price * 0.5)

    if tickets_price > balance:
        # Saldo pengguna tidak cukup untuk membeli tiket
        print("Harga tiket total: " + str(tickets_price))
        print("Saldo: " + str(balance))
        print("Saldo anda tidak cukup.")
        print("Silakan mengisi saldo Anda.")
        return

    # Jika lolos semua pengecekan, akan dimulai proses penyetoran data pembelian tiket.

    # Menuliskan pembelian baru ke rekaman pembelian.csv

    data_pembelian = [username, date_now, id_wahana, tickets]
    new_pembelian = aux.konsDot(pembelian.data, data_pembelian)
    load.store("pembelian.csv", new_pembelian)

    # Menambahkan kepemilikan tiket ke rekaman tiket.csv

    previously_bought = aux.merge([tiket.data[0]],
                                  aux.find_baris_all(tiket.data, "Username",
                                                     username))

    if previously_bought[1:] == [[]]:
        # Jika pengguna belum pernah membeli tiket sama sekali, ditambahkan entry baru.
        data_tiket = [username, id_wahana, tickets]
        new_tiket = aux.konsDot(tiket.data, data_tiket)

    else:  # Pengguna sudah pernah membeli tiket sebelumnya.
        ticket_id_wahana = aux.find_baris_first(previously_bought, "ID_Wahana",
                                                id_wahana)

        if ticket_id_wahana == []:
            # Jika pengguna belum pernah membeli tiket di id_wahana yang sama sebelumnya, ditambahkan entry baru.
            data_tiket = [username, id_wahana, tickets]
            new_tiket = aux.konsDot(tiket.data, data_tiket)
        else:
            # Jika pengguna pernah membeli tiket di id_wahana yang sama sebelumnya, baris tersebut diperbarukan.
            new_tiket = tiket.data
            row_to_be_changed = aux.find_baris_idx(
                new_tiket, ticket_id_wahana)  # Baris tiket yang ingin diganti
            idx_col_jml_tiket = aux.find_idx(new_tiket, "Jumlah_Tiket")
            new_tiket[row_to_be_changed][idx_col_jml_tiket] = str(
                int(new_tiket[row_to_be_changed][idx_col_jml_tiket]) + tickets)

    load.store("tiket.csv", new_tiket)

    # Mengurangi saldo pengguna dengan harga tiket yang dibayar.
    pengguna[1][aux.find_idx(pengguna, "Saldo")] = str(balance - tickets_price)

    print("Prosedur pembelian tiket telah selesai." +
          "\nSelamat bersenang-senang di " +
          wahana_found[aux.find_idx(wahana.data, "Nama_Wahana")] + "!")

    return
Ejemplo n.º 3
0
def main(pengguna):
    # PROCEDURE main (input pengguna)
    # I.S. kehilangan dan tiket abstrak
    # F.S. Jika input lolos ujian, tiket dan kehilangan akan diupdate.
    # KAMUS LOKAL

    # ALGORITMA
    user = load.use("user.csv")
    wahana = load.use("wahana.csv")
    kehilangan = load.use("hilang.csv")
    tiket = load.use("tiket.csv")

    username_typing = str(pengguna[1][aux.find_idx(pengguna, "Username")])
    are_they_an_admin = (str(pengguna[1][aux.find_idx(pengguna,
                                                      "Role")]) == "Admin"
                         )  # Mengecek apakah pengguna admin

    # Input dan validasi username
    print(
        "Jika Anda bukan admin, Anda tidak bisa melaporkan kehilangan tiket untuk pengguna lain."
    )
    username_lost_tickets = str(input("Masukkan username: "******"Jika Anda bukan admin, Anda tidak bisa melaporkan kehilangan tiket untuk pengguna lain."
            )
            username_lost_tickets = str(input("Masukkan username *Anda*: "))
    else:
        # Admin boleh melaporkan kehilangan tiket untuk pengguna lain.
        user_found = aux.find_baris_first(user.data, "Username",
                                          username_lost_tickets)
        if user_found == []:
            print("Tidak ditemukan pengguna dengan username \"" +
                  username_lost_tickets + '\".')
            return

    # Input dan validasi tanggal hari ini
    date_now = aux.input_date("Masukkan tanggal hari ini: ")

    # Input dan validasi ID Wahana
    id_wahana = input("Masukkan ID wahana: ")
    wahana_found = aux.find_baris_first(wahana.data, "ID_Wahana", id_wahana)
    if wahana_found == []:
        print("Tidak ditemukan wahana dengan ID \"" + id_wahana + '\".')
        return
    wahana_name = wahana_found[aux.find_idx(wahana.data, "Nama_Wahana")]

    # Input dan validasi jumlah tiket yang hilang
    tickets = int(input("Jumlah tiket yang dihilangkan: "))
    while tickets <= 0:
        if tickets == 0:
            cancel_buy = input("Batalkan melapor kehilangan? [Y/N] ")
            while cancel_buy.upper() != 'Y' or cancel_buy.upper() != 'N':
                cancel_buy = input(
                    "Masukan salah. Batalkan melapor kehilangan? [Y/N] ")
            if cancel_buy == 'Y':
                return
            else:  # cancel_buy == 'N'
                tickets = int(input("Jumlah tiket yang dihilangkan: "))
        else:
            tickets = int(
                input("Jumlah tiket harusnya bukan negatif. Mohon diulang: "))

    # Mengecek apakah pengguna sudah pernah membeli tiket di wahana yang dimasukkan
    previously_bought = aux.merge([tiket.data[0]],
                                  aux.find_baris_all(tiket.data, "Username",
                                                     username_lost_tickets))

    ticket_id_wahana = aux.find_baris_first(previously_bought, "ID_Wahana",
                                            id_wahana)

    if ticket_id_wahana == []:
        # Jika pengguna belum pernah membeli tiket di id_wahana, pengguna tidak diperbolehkan memakai tiket.
        print("Tiket Anda tidak valid dalam sistem kami.")
        print("Alasan: Belum membeli tiket pada wahana " + wahana_name + ".\n")
        return

    owned_tickets = str(ticket_id_wahana[aux.find_idx(tiket.data,
                                                      "Jumlah_Tiket")])

    if int(owned_tickets) < tickets:
        # Jika pengguna meminta tiket lebih banyak daripada yang sebenarnya ia punya, pengguna tidak bisa melaporkan kehilangan tiket.
        print("Tiket Anda tidak valid dalam sistem kami.")
        print("Alasan: Anda hanya memiliki " + owned_tickets +
              " tiket pada wahana " + wahana_name + ".\n")

    else:
        # Jika pengguna memiliki tiket yang cukup pada wahana, laporan kehilangan berlanjut.

        # File kehilangan tiket diupdate, sesuai banyak tiket yang dipakai.
        data_lost = [username_lost_tickets, date_now, id_wahana, tickets]
        new_lost = aux.konsDot(kehilangan.data, data_lost)
        load.store("hilang.csv", new_lost)

        # File kehilangan tiket diupdate, banyak tiket yang dimiliki pengguna dikurangi banyak tiket yang hilang.
        if int(owned_tickets) == tickets:
            # Jika pengguna kehabisan tiket pada wahana tersebut, baris tersebut dihapus.
            row_to_be_changed = aux.find_baris_idx(
                tiket.data, ticket_id_wahana)  # Baris tiket yang ingin dihapus
            new_tiket = aux.merge(tiket.data[:row_to_be_changed],
                                  tiket.data[row_to_be_changed +
                                             1:])  # Penghapusan baris
        else:
            # Baris kepemilikan tiket pengguna diganti dengan banyak tiket baru.
            row_to_be_changed = aux.find_baris_idx(
                tiket.data, ticket_id_wahana)  # Baris tiket yang ingin diganti
            idx_col_jml_tiket = aux.find_idx(tiket.data, "Jumlah_Tiket")
            new_tiket = tiket.data
            new_tiket[row_to_be_changed][idx_col_jml_tiket] = str(
                int(owned_tickets) - int(tickets))  # Penggantian baris
        load.store("tiket.csv", new_tiket)

        print("Laporan kehilangan tiket Anda telah direkam.\n\n")

    return
Ejemplo n.º 4
0
def main ():
    # procedure main ()
    # I.S. Abstrak
    # F.S. Wahana sesuai batasan pencarian ditampilkan.
    # Program utama F06
    wahana = load.use ("wahana.csv")

    print ("Jenis batasan umur: ")
    print ("1. Anak-anak (<17 tahun)")
    print ("2. Dewasa (>=17 tahun)")
    print ("3. Semua umur")
    print (" ")
    print ("Jenis batasan tinggi badan: ")
    print ("1. Lebih dari 170 cm")
    print ("2. Tanpa batasan")
    print (" ")
    while True:
        umur = int(input("Batasan umur pemain: "))
        if isBatasUmurTrue(umur):  # 1, 2, 3
            break
        else:  # selain 1, 2, 3
            print("Batasan umur tidak valid!")
            return

    while True:
        tinggi = int(input("Batasan tinggi pemain: "))
        if isBatasTinggiTrue(tinggi):  # 1, 2
            break
        else:  # selain 1, 2
            print("Batasan tinggi tidak valid!")
            return
        # data_wahana = load.use(wahanafile)
    
    if umur == 1 :
        if tinggi == 1:
            u = "anak-anak"
            t = ">170"
        elif tinggi == 2:
            u = "anak-anak"
            t = "tanpa batasan"
    elif umur == 2:
        if tinggi == 1:
            u = "dewasa"
            t = ">170"
        elif tinggi == 2:
            u = "dewasa"
            t = "tanpa batasan"
    elif umur == 3:
        if tinggi == 1:
            u = "semua umur"
            t = ">170"
        elif tinggi == 2:
            u = "semua umur"
            t = "tanpa batasan"
            
    umur_true = aux.merge([wahana.data[0]], aux.find_baris_all(wahana.data, "Batasan_Umur", u))

    if umur_true[1:] == []:
        print("Tidak ada wahana sesuai batasan yang dimasukkan.")
        return
    
    validasi = aux.find_baris_all(umur_true, "Batasan_Tinggi", t)

    if validasi == [[]]:
        print("Tidak ada wahana sesuai batasan yang dimasukkan.")
        return

    print("Hasil pencarian: ")
    for i in range(aux.length(validasi)):
        id_wahana = validasi[i][aux.find_idx(wahana.data, "ID_Wahana")]
        nama_wahana = validasi[i][aux.find_idx(wahana.data, "Nama_Wahana")]
        harga_tiket = validasi[i][aux.find_idx(wahana.data, "Harga_Tiket")]
        print (id_wahana, "|", nama_wahana, "|", harga_tiket)
    
    return
Ejemplo n.º 5
0
def main(pengguna):
    # PROCEDURE main (input pengguna : array [0..1] of array [0..6] of string,
    #                 output tiket : Rekaman, output refund : Rekaman)
    # I.S. tiket dan refund abstrak
    # F.S. Jika input lolos ujian, tiken dan refund akan diupdate.
    # KAMUS LOKAL
    # wahana, tiket, refund: Rekaman
    # username, role : string
    # balance : integer
    # id_wahana : string
    # wahana_found : array[0..4] of string
    # date_now : string
    # tickets, owned_tickets: integer
    # cancel_refund : character
    # data_refund : array [0..3] of string
    # new_refund, previously_bought : Rekaman.data
    # ALGORITMA
    wahana = load.use("wahana.csv")
    tiket = load.use("tiket.csv")
    refund = load.use("refund.csv")

    username = str(pengguna[1][aux.find_idx(pengguna, "Username")])
    balance = int(pengguna[1][aux.find_idx(pengguna, "Saldo")])
    role = str(pengguna[1][aux.find_idx(pengguna, "Role")])

    # Input dan validasi ID Wahana:
    id_wahana = input("Masukkan ID wahana: ")
    wahana_found = aux.find_baris_first(wahana.data, "ID_Wahana", id_wahana)
    if wahana_found == []:
        print("Tidak ditemukan wahana dengan ID \"" + id_wahana + '\".')
        return
    wahana_name = wahana_found[aux.find_idx(wahana.data, "Nama_Wahana")]

    # Input dan validasi tanggal hari ini
    date_now = aux.input_date("Masukkan tanggal hari ini: ")

    # Input dan validasi jumlah tiket yang ingin digunakan
    tickets = int(input("Jumlah tiket yang di-refund: "))
    while tickets <= 0:
        if tickets == 0:
            cancel_refund = input("Batalkan refund tiket? [Y/N] ")
            while cancel_refund.upper() != 'Y' or cancel_refund.upper() != 'N':
                cancel_refund = input(
                    "Masukan salah. Batalkan refund tiket? [Y/N] ")
            if cancel_refund == 'Y':
                return
            else:  # cancel_refund == 'N'
                tickets = int(input("Jumlah refund yang digunakan: "))
        else:
            tickets = int(
                input("Jumlah tiket harusnya bukan negatif. Mohon diulang: "))

    # Mengecek apakah pengguna sudah membeli tiket pada wahana

    previously_bought = aux.merge([tiket.data[0]],
                                  aux.find_baris_all(tiket.data, "Username",
                                                     username))

    ticket_id_wahana = aux.find_baris_first(previously_bought, "ID_Wahana",
                                            id_wahana)

    if ticket_id_wahana == []:
        # Jika pengguna belum pernah membeli tiket di id_wahana, pengguna tidak diperbolehkan memakai tiket.
        print("Tiket Anda tidak valid dalam sistem kami.")
        print("Alasan: Belum membeli tiket pada wahana " + wahana_name + ".")
        return

    owned_tickets = str(ticket_id_wahana[aux.find_idx(tiket.data,
                                                      "Jumlah_Tiket")])

    if int(owned_tickets) < tickets:
        # Jika pengguna meminta tiket lebih banyak daripada yang sebenarnya ia punya, pengguna tidak diperbolehkan me-refund tiket.
        print("Tiket Anda tidak valid dalam sistem kami.")
        print("Alasan: Anda hanya memiliki " + owned_tickets +
              " tiket pada wahana " + wahana_name + ".")
    else:
        # Jika pengguna memiliki tiket yang cukup pada wahana, pengguna boleh me-refund tiket.

        # File refund tiket diupdate, sesuai banyak tiket yang dipakai.
        data_refund = [username, date_now, id_wahana, tickets]
        new_refund = aux.konsDot(refund.data, data_refund)
        load.store("refund.csv", new_refund)

        # File refund tiket diupdate, banyak tiket yang dimiliki pengguna dikurangi banyak tiket yang di-refund
        if int(owned_tickets) == tickets:
            # Jika pengguna kehabisan tiket pada wahana tersebut, baris tersebut dihapus.
            row_to_be_changed = aux.find_baris_idx(
                tiket.data, ticket_id_wahana)  # Baris tiket yang ingin dihapus
            new_tiket = aux.merge(tiket.data[:row_to_be_changed],
                                  tiket.data[row_to_be_changed +
                                             1:])  # Penghapusan baris
        else:
            # Baris kepemilikan tiket pengguna diganti dengan banyak tiket baru.
            row_to_be_changed = aux.find_baris_idx(
                tiket.data, ticket_id_wahana)  # Baris tiket yang ingin diganti
            idx_col_jml_tiket = aux.find_idx(tiket.data, "Jumlah_Tiket")
            new_tiket = tiket.data
            new_tiket[row_to_be_changed][idx_col_jml_tiket] = str(
                int(owned_tickets) - int(tickets))  # Penggantian baris
        load.store("tiket.csv", new_tiket)

        # Memberi refund ke saldo akun pengguna
        single_ticket_price = int(wahana_found[aux.find_idx(
            wahana.data, "Harga_Tiket")])
        refund_percentage = 0.8  # Konstanta persentase dari harga tiket
        if role == "Gold":
            # Jika pengguna merupakan pemain dengan golden account, refund disesuaikan harga gold.
            refund_percentage *= 0.8
        refund_amount = round(tickets * refund_percentage *
                              single_ticket_price)
        pengguna[1][aux.find_idx(pengguna,
                                 "Saldo")] = str(balance + refund_amount)

        print("Uang refund sudah kami berikan pada akun Anda.")