Fakultas Ilmu Komputer UI
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Ahmad Dzikrul Fikri
1806196806-DDP1
Commits
62c1f8aa
Commit
62c1f8aa
authored
May 01, 2020
by
Ahmad Dzikrul Fikri
Browse files
Tugas Pemrograman 10 - Soal 2
parent
18da5e25
Changes
2
Hide whitespace changes
Inline
Side-by-side
TP10_1_1806196806.py
deleted
100644 → 0
View file @
18da5e25
from
random
import
randint
def
nomor_atm
(
berkas
=
"nasabah_awal.txt"
):
try
:
data
=
open
(
berkas
)
s
=
{}
for
line
in
data
:
line
=
line
.
replace
(
'
\n
'
,
''
)
line
=
line
.
replace
(
''
,
''
)
nama
,
kota
,
level
=
line
.
split
()
if
kota
.
lower
()
==
'jakarta'
:
kode_kota
=
'01'
elif
kota
.
lower
()
==
'bekasi'
:
kode_kota
=
'02'
else
:
kode_kota
=
'03'
if
level
.
lower
()
==
'emas'
:
kode_level
=
'01'
elif
level
.
lower
()
==
'perak'
:
kode_level
=
'02'
else
:
kode_level
=
'03'
kode_acak
=
str
(
randint
(
10000
,
99999
))
value
=
kode_kota
+
kode_level
+
kode_acak
s
[
nama
]
=
value
data
.
close
()
except
KeyError
:
print
(
'Value hanya boleh terdiri dari satu tipe data (tidak boleh campuran)
\n
'
)
except
SyntaxError
:
print
(
'Key hanya boleh terdiri dari satu tipe data (tidak boleh campuran)
\n
'
)
except
FileNotFoundError
:
print
(
'File tidak ditemukan
\n
Pastikan file berada di foldder yang sama
\n
Pastikan terminal terhubung dengan folder file
\n
'
)
return
s
\ No newline at end of file
TP10_2_1806196806.py
0 → 100644
View file @
62c1f8aa
from
TP10_1_1806196806
import
*
hash_atm
=
nomor_atm
()
s
=
{}
hash_riwayat
=
{}
keluar
=
False
while
keluar
==
False
:
print
(
'Pilih menu:
\n
1. Transfer
\n
2. Cek riwayat
\n
3. Keluar'
)
pilihan
=
input
(
'
\n
Silahkan masukkan pilihan sesuai nomor: '
)
if
pilihan
==
'1'
:
try
:
perintah
=
input
(
'Masukan perintah transfer: '
).
lower
()
kode
,
pengirim
,
penerima
,
nominal
=
perintah
.
split
()
if
int
(
nominal
)
<=
9000000
:
nominal
=
'%07d'
%
(
int
(
nominal
))
value
=
hash_atm
[
penerima
.
upper
()]
+
nominal
s
.
setdefault
(
pengirim
.
upper
()
+
';'
+
hash_atm
[
pengirim
.
upper
()],[]).
append
(
value
)
hash_riwayat
.
setdefault
(
pengirim
.
upper
(),[]).
append
(
penerima
.
upper
()
+
' '
+
str
(
int
(
nominal
)))
print
(
'Transfer berhasil!
\n
'
)
else
:
print
(
'
\n
Nominal transaksi maksimum adalah Rp 9.000.000'
)
print
(
'Silahkan masukkan nominal yang lebih rendah
\n
'
)
except
KeyError
:
print
(
'Value hanya boleh terdiri dari satu tipe data (tidak boleh campuran)
\n
'
)
except
SyntaxError
:
print
(
'Key hanya boleh terdiri dari satu tipe data (tidak boleh campuran)
\n
'
)
except
ValueError
:
print
(
'
\n
input yang anda masukkan salah'
)
print
(
'format input yang benar : transfer [nama nasabah pengirim] [nama nasabah penerima] [nominal transfer]'
)
print
(
'Contoh input:
\'
transfer Alsi Airam 20000
\'\n
'
)
elif
pilihan
==
'2'
:
nama
=
input
(
'Masukan nama nasabah: '
).
upper
()
try
:
hash_atm
[
nama
]
print
(
'Riwayat '
+
nama
+
':'
)
try
:
for
i
in
hash_riwayat
[
nama
]:
tujuan
,
jumlah
=
i
.
split
()
print
(
'Transfer ke '
+
tujuan
+
' sebesar '
+
jumlah
+
'
\n
'
)
except
:
print
(
nama
+
' belum melakukan transaksi
\n
'
)
except
:
print
(
nama
+
' tidak terdaftar dalam sistem ATM
\n
'
)
elif
pilihan
==
'3'
:
print
(
'Terimakasih'
)
keluar
=
True
else
:
print
(
'
\n
Input anda salah!
\n
Silahkan masukkan input berupa nomor pada pilihan
\n
'
)
data_baru
=
open
(
'1806196806_transaction_log.txt'
,
'w'
)
for
nama
in
hash_atm
.
keys
():
try
:
s
[
nama
.
upper
()
+
';'
+
hash_atm
[
nama
]]
for
nama_dan_atm
in
s
.
keys
():
data_baru
.
write
(
nama_dan_atm
+
':
\n
'
)
for
transaksi
in
s
[
nama_dan_atm
]:
data_baru
.
write
(
transaksi
+
'
\n
'
)
except
:
data_baru
.
write
(
nama
+
';'
+
hash_atm
[
nama
]
+
':
\n
'
)
data_baru
.
write
(
'
\n
Belum pernah melakukan transaksi.
\n
'
)
data_baru
.
close
()
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment