Fakultas Ilmu Komputer UI

Commit c225e8bb authored by Ahmad Dzikrul Fikri's avatar Ahmad Dzikrul Fikri
Browse files

Tugas Pemrograman 8 - Soal 2 Tahap 1

parent 5bea875b
def beli_gas(nama_pembeli, jumlah_pembelian, alamat):
try:
data = open(alamat)
data_input = []
ditemukan = False
for line in data:
nama, jumlah = line.split()
if nama.lower() == nama_pembeli:
ditemukan = True
jumlah =int(jumlah) + jumlah_pembelian
print('Total pembelian',nama,'adalah',jumlah)
data_input.append(nama+' '+str(jumlah))
if ditemukan == False:
data_input.append(nama_pembeli+' '+str(jumlah_pembelian))
print('Total pembelian',nama_pembeli,'adalah',jumlah_pembelian)
data.close()
data_baru = open('TP8_1_1806196806.txt', 'w')
for i in range(len(data_input)):
data_baru.write(data_input[i]+'\n')
data_baru.close()
except TypeError:
print('input ke dalam file harus berupa string')
except FileNotFoundError:
print('\nFile tidak ditemukan')
print('Pastikan file input_order2.txt berada dalam folder yang sama dengan script ini')
print('Pastikan juga terminal anda terhubung dengan folder ini\n')
print('Silahkan keluar dulu dari program')
def refund_gas(nama_pembeli, jumlah_refund, alamat):
try:
data = open(alamat)
data_input = []
ditemukan = False
for line in data:
nama, jumlah = line.split()
if nama.lower() == nama_pembeli:
jumlah =int(jumlah) - jumlah_refund
print('Total pembelian',nama,'adalah',jumlah)
ditemukan = True
if int(jumlah) > 0:
data_input.append(nama+' '+str(jumlah))
if ditemukan == False:
print(nama_pembeli,'belum membeli apapun')
data.close()
data_baru = open('TP8_1_1806196806.txt', 'w')
for i in range(len(data_input)):
data_baru.write(data_input[i]+'\n')
data_baru.close()
except TypeError:
print('input ke dalam file harus berupa string')
except FileNotFoundError:
print('\nFile tidak ditemukan')
print('Pastikan file input_order2.txt berada dalam folder yang sama dengan script ini')
print('Pastikan juga terminal anda terhubung dengan folder ini\n')
print('Silahkan keluar dulu dari program')
def input_awal():
print("\npilihan :\n\tbeli\n\trefund\n\tkeluar")
pilihan = input("Masukkan pilihan :").lower()
return pilihan
def cek_nama_eror():
input_nama_eror = True
while input_nama_eror == True:
nama_input = input('masukkan nama anda:').lower()
if nama_input.isalpha() == True:
input_nama_eror = False
else:
print('\nnama harus berupa huruf tanpa angka\n')
return nama_input
def cek_input_angka_eror():
input_pembelian_eror = True
while input_pembelian_eror == True:
try:
angka = int(input('masukkan jumlah:'))
input_pembelian_eror = False
except:
print('input harus berupa angka tanpa huruf')
return angka
pilihan = input_awal()
alamat_file = 'input_order2.txt'
while pilihan != 'keluar':
if pilihan == 'beli':
nama_input = cek_nama_eror()
pembelian = cek_input_angka_eror()
if pembelian <= 0:
print('Permintaan harus lebih besar dari 0')
else:
beli_gas(nama_input,pembelian,alamat_file)
pilihan = input_awal()
elif pilihan == 'refund':
nama_input = cek_nama_eror()
permintaan_refund = cek_input_angka_eror()
if permintaan_refund <= 0:
print('Permintaan harus lebih besar dari 0')
else:
refund_gas(nama_input,permintaan_refund,alamat_file)
pilihan = input_awal()
else:
print("Input anda salah, silahkan masukkan pilihan sesuai pilihan")
pilihan = input_awal()
alamat_file= 'TP8_1_1806196806.txt'
\ No newline at end of file
def sorting(data):
return data[1]
def get_koperasi(minimal_pesan,huruf_beruntung):
# TODO
hash_result = {}
try:
result_f = open('TP8_1_1806196806.txt')
jumlah_cashback = 0
for line in result_f:
(nama, jumlah) = line.split()
lower_nama = nama.lower()
if lower_nama.startswith(huruf_beruntung) == True and int(jumlah) > minimal_pesan:
diskon_pelanggan_setia = 16000*int(jumlah)*0.2
diskon_huruf_beruntung = (16000*int(jumlah) - diskon_pelanggan_setia)*0.1
cashback = diskon_pelanggan_setia + diskon_huruf_beruntung
harga = 16000*int(jumlah) - cashback
hash_result[nama+' '+jumlah] = int(harga)
elif lower_nama.startswith(huruf_beruntung) == True:
cashback = 16000*int(jumlah)*0.1
harga = 16000*int(jumlah) - cashback
hash_result[nama+' '+jumlah] = int(harga)
elif int(jumlah) > minimal_pesan:
cashback = 16000*int(jumlah)*0.2
harga = 16000*int(jumlah) - cashback
hash_result[nama+' '+jumlah] = int(harga)
else:
harga = int(jumlah)*16000
hash_result[nama+' '+jumlah] = int(harga)
result_f.close()
sorted_items = sorted(hash_result.items(), key=sorting, reverse = True)
hash_result = dict(sorted_items)
data_baru = open('TP8_2_1806196806.txt', 'w')
for keys in hash_result.keys():
data_baru.write(keys+' '+str(hash_result[keys])+'\n')
data_baru.close()
except TypeError:
print('input ke dalam file harus berupa string')
except FileNotFoundError:
print('\nFile tidak ditemukan')
print('Pastikan file input_order2.txt berada dalam folder yang sama dengan script ini')
print('Pastikan juga terminal anda terhubung dengan folder ini\n')
print('keluar dari program')
def cek_huruf_eror():
input_huruf_eror = True
while input_huruf_eror == True:
huruf_input = input('masukkan huruf depan dari nama pelanggan yang beruntung: ').lower()
if huruf_input.isalpha() == True:
input_huruf_eror = False
else:
print('\ninput huruf harus berupa huruf tanpa angka\n')
return huruf_input
def cek_input_angka_eror():
input_pembelian_eror = True
while input_pembelian_eror == True:
try:
angka = int(input('masukkan minimal pembelian untuk menjadi pelanggan tetap: '))
input_pembelian_eror = False
except:
print('\ninput harus berupa angka tanpa huruf\n')
return angka
batas_pelanggan_tetap = cek_input_angka_eror()
pelanggan_beruntung = cek_huruf_eror()
get_koperasi(batas_pelanggan_tetap,pelanggan_beruntung)
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment