Skip to content

Commit 90e97b7

Browse files
250441100022_IrwansyahNurRohmad_Modul6_AsprakKakSalman
1 parent e94b6f1 commit 90e97b7

File tree

3 files changed

+288
-0
lines changed

3 files changed

+288
-0
lines changed

modul-6/soal1 modul 6.py

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
def tambah_pengunjung(data_kunjungan, id_pengunjung):
2+
print("\n Tambah Data Pengunjung ")
3+
nama_pengunjung = input("Nama pengunjung : ")
4+
nama_santri = input("Santri yang dijenguk: ")
5+
6+
while True:
7+
daerah = input("Daerah asal (Sumatra/Kalimantan/Jawa): ").capitalize()
8+
if daerah in ["Sumatra", "Kalimantan", "Jawa"]:
9+
break
10+
print("Daerah harus Sumatra, Kalimantan, atau Jawa!")
11+
12+
data_kunjungan.append([id_pengunjung, nama_pengunjung, nama_santri, daerah])
13+
print(f"Data berhasil ditambahkan dengan ID Antrian: {id_pengunjung}")
14+
id_pengunjung += 1
15+
return id_pengunjung
16+
17+
18+
def tampilkan_pengunjung(data_kunjungan):
19+
print("\n Daftar Pengunjung ")
20+
21+
if len(data_kunjungan) == 0:
22+
print("Belum ada data pengunjung.")
23+
return
24+
25+
sumatra = []
26+
kalimantan = []
27+
jawa = []
28+
29+
for data in data_kunjungan:
30+
if data[3] == "Sumatra":
31+
sumatra.append(data)
32+
elif data[3] == "Kalimantan":
33+
kalimantan.append(data)
34+
else:
35+
jawa.append(data)
36+
37+
urutan = [("Sumatra", sumatra), ("Kalimantan", kalimantan), ("Jawa", jawa)]
38+
39+
for daerah, daftar in urutan:
40+
if len(daftar) > 0:
41+
print(f"\nDaerah {daerah}:")
42+
for d in daftar:
43+
print(f" ID: {d[0]} Pengunjung: {d[1]} Santri: {d[2]}")
44+
45+
46+
def hapus_pengunjung(data_kunjungan):
47+
print("\n=== Hapus Data Pengunjung ===")
48+
49+
if len(data_kunjungan) == 0:
50+
print("Belum ada data pengunjung.")
51+
return
52+
53+
id_hapus = int(input("Masukkan ID antrian yang akan dihapus: "))
54+
55+
for i in range(len(data_kunjungan)):
56+
if data_kunjungan[i][0] == id_hapus:
57+
data_kunjungan.pop(i)
58+
print("Data berhasil dihapus!")
59+
return
60+
61+
print("ID tidak ditemukan!")
62+
63+
data_kunjungan = []
64+
id_pengunjung = 1
65+
66+
while True:
67+
print("\n SISTEM KUNJUNGAN SANTRI ")
68+
print("1. Tambah Pengunjung")
69+
print("2. Tampilkan Daftar Pengunjung")
70+
print("3. Hapus Pengunjung")
71+
print("4. Keluar")
72+
73+
pilih = input("Pilih menu (1-4): ")
74+
75+
if pilih == "1":
76+
id_pengunjung = tambah_pengunjung(data_kunjungan, id_pengunjung)
77+
elif pilih == "2":
78+
tampilkan_pengunjung(data_kunjungan)
79+
elif pilih == "3":
80+
hapus_pengunjung(data_kunjungan)
81+
elif pilih == "4":
82+
print("Terima kasih berkunjunggg :D!")
83+
break
84+
else:
85+
print("Pilihan tidak valid!")

modul-6/soal2 modul 6.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
def gabung_dan_urutkan(t1, t2):
2+
gabungan = t1 + t2
3+
print(f"Hasil gabungan: {gabungan}")
4+
5+
unik = []
6+
for angka in gabungan:
7+
if angka not in unik:
8+
unik.append(angka)
9+
print(f"Setelah hapus duplikat: {unik}")
10+
11+
n = len(unik)
12+
for i in range(n):
13+
for j in range(0, n - i - 1):
14+
if unik[j] < unik[j + 1]:
15+
unik[j], unik[j + 1] = unik[j + 1], unik[j]
16+
17+
print(f"Setelah diurutkan (descending): {unik}")
18+
19+
20+
hasil_akhir = tuple(unik)
21+
return hasil_akhir
22+
23+
24+
print("=" * 50)
25+
print("PROGRAM MAC ALLISTER - GABUNG DAN URUTKAN TUPLE")
26+
print("=" * 50)
27+
28+
print("\n--- CONTOH DARI SOAL ---")
29+
t1 = (3, 1, 4)
30+
t2 = (1, 5, 9)
31+
32+
print(f"Tuple 1: {t1}")
33+
print(f"Tuple 2: {t2}")
34+
print()
35+
36+
hasil = gabung_dan_urutkan(t1, t2)
37+
38+
print(f"\n>>> HASIL AKHIR: {hasil}")
39+
print(f"Tipe data: {type(hasil)}")
40+
41+
print("\n\n--- CONTOH LAIN ---")
42+
t1 = (7, 2, 9, 2, 5)
43+
t2 = (5, 9, 1, 7, 3)
44+
45+
print(f"Tuple 1: {t1}")
46+
print(f"Tuple 2: {t2}")
47+
print()
48+
49+
hasil2 = gabung_dan_urutkan(t1, t2)
50+
51+
print(f"\n>>> HASIL AKHIR: {hasil2}")
52+
53+
print("\n\n" + "=" * 50)
54+
pilihan = input("Ingin coba dengan tuple sendiri? (y/n): ")
55+
56+
if pilihan.lower() == 'y':
57+
try:
58+
print("\nMasukkan angka dipisahkan dengan spasi")
59+
input1 = input("Tuple 1: ")
60+
input2 = input("Tuple 2: ")
61+
t1_user = tuple(map(int, input1.split()))
62+
t2_user = tuple(map(int, input2.split()))
63+
64+
print(f"\nTuple 1: {t1_user}")
65+
print(f"Tuple 2: {t2_user}")
66+
print()
67+
68+
hasil_user = gabung_dan_urutkan(t1_user, t2_user)
69+
70+
print(f"\n>>> HASIL AKHIR: {hasil_user}")
71+
except:
72+
print("Error! Pastikan input berupa angka dipisahkan spasi.")
73+
else:
74+
print("\nProgram selesai!")

modul-6/soal3 modul 6.py

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
def tampilkan_menu():
2+
print("\n=== PROGRAM SZOBOSZLAI ===")
3+
print("1. Tambah Angka (Create)")
4+
print("2. Tampilkan List (Read)")
5+
print("3. Ubah Angka (Update)")
6+
print("4. Hapus Angka (Delete)")
7+
print("5. Cek Apakah Bisa Dibagi Sama")
8+
print("6. Keluar")
9+
10+
def tambah_angka(daftar_angka):
11+
try:
12+
angka = int(input("\nMasukkan angka yang ingin ditambahkan: "))
13+
daftar_angka.append(angka)
14+
print(f"Angka {angka} berhasil ditambahkan!")
15+
except ValueError:
16+
print("Input tidak valid! Masukkan angka.")
17+
18+
def tampilkan_list(daftar_angka):
19+
if not daftar_angka:
20+
print("\nList masih kosong.")
21+
else:
22+
print(f"\nDaftar angka: {daftar_angka}")
23+
print(f"Total elemen: {len(daftar_angka)}")
24+
25+
def ubah_angka(daftar_angka):
26+
if not daftar_angka:
27+
print("\nList masih kosong.")
28+
return
29+
30+
tampilkan_list(daftar_angka)
31+
try:
32+
indeks = int(input("\nMasukkan indeks yang ingin diubah (0-{}): ".format(len(daftar_angka)-1)))
33+
34+
if 0 <= indeks < len(daftar_angka):
35+
angka_baru = int(input("Masukkan angka baru: "))
36+
angka_lama = daftar_angka[indeks]
37+
daftar_angka[indeks] = angka_baru
38+
print(f"Angka pada indeks {indeks} berhasil diubah dari {angka_lama} menjadi {angka_baru}!")
39+
else:
40+
print("Indeks tidak valid!")
41+
except ValueError:
42+
print("Input tidak valid!")
43+
44+
def hapus_angka(daftar_angka):
45+
if not daftar_angka:
46+
print("\nList masih kosong.")
47+
return
48+
49+
tampilkan_list(daftar_angka)
50+
try:
51+
indeks = int(input("\nMasukkan indeks yang ingin dihapus (0-{}): ".format(len(daftar_angka)-1)))
52+
53+
if 0 <= indeks < len(daftar_angka):
54+
angka_hapus = daftar_angka.pop(indeks)
55+
print(f"Angka {angka_hapus} pada indeks {indeks} berhasil dihapus!")
56+
else:
57+
print("Indeks tidak valid!")
58+
except ValueError:
59+
print("Input tidak valid!")
60+
61+
def cek_pembagian_sama(daftar_angka):
62+
63+
if not daftar_angka:
64+
print("\nList masih kosong.")
65+
return
66+
67+
print(f"\nDaftar angka: {daftar_angka}")
68+
69+
total = 0
70+
for angka in daftar_angka:
71+
total += angka
72+
73+
print(f"Total semua angka: {total}")
74+
75+
if total % 2 != 0:
76+
print("\nHasil: False")
77+
print("Alasan: Total angka ganjil, tidak bisa dibagi menjadi 2 bagian sama.")
78+
return False
79+
80+
target = total // 2
81+
print(f"Target per bagian: {target}")
82+
83+
n = len(daftar_angka)
84+
85+
dp = [False] * (target + 1)
86+
dp[0] = True
87+
88+
for angka in daftar_angka:
89+
for i in range(target, angka - 1, -1):
90+
if dp[i - angka]:
91+
dp[i] = True
92+
93+
hasil = dp[target]
94+
95+
print(f"\nHasil: {hasil}")
96+
97+
if hasil:
98+
print("List dapat dibagi menjadi 2 bagian dengan jumlah yang sama!")
99+
print(f"Setiap bagian berjumlah: {target}")
100+
else:
101+
print("List TIDAK dapat dibagi menjadi 2 bagian dengan jumlah yang sama.")
102+
103+
return hasil
104+
105+
def main():
106+
daftar_angka = []
107+
108+
while True:
109+
tampilkan_menu()
110+
pilihan = input("\nPilih menu (1-6): ")
111+
112+
if pilihan == "1":
113+
tambah_angka(daftar_angka)
114+
elif pilihan == "2":
115+
tampilkan_list(daftar_angka)
116+
elif pilihan == "3":
117+
ubah_angka(daftar_angka)
118+
elif pilihan == "4":
119+
hapus_angka(daftar_angka)
120+
elif pilihan == "5":
121+
cek_pembagian_sama(daftar_angka)
122+
elif pilihan == "6":
123+
print("\nTerima kasih! Program selesai.")
124+
break
125+
else:
126+
print("\nPilihan tidak valid!")
127+
128+
if __name__ == "__main__":
129+
main()

0 commit comments

Comments
 (0)