Skip to content

Commit 48feef5

Browse files
committed
250441100006_MohammadIrfanHariyono_Modul6_AsprakKakSalman
1 parent e7fcbb4 commit 48feef5

File tree

3 files changed

+319
-0
lines changed

3 files changed

+319
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
def tambah_pengunjung(list_kunjungan_dari_main, id_terakhir_dari_main):
2+
3+
print("\nTambah Data Pengunjung")
4+
nama_pengunjung = input("Nama Pengunjung: ")
5+
nama_santri = input("Nama Santri: ")
6+
7+
while True:
8+
print("Daerah asal : Sumatra, Kalimantan, Jawa")
9+
daerah_asal = input("Masukkan Daerah Asal: ").lower()
10+
11+
if daerah_asal in ["sumatra", "kalimantan", "jawa"]:
12+
break
13+
else:
14+
print(" Perhatikan ketikan mu dek")
15+
16+
id_terakhir_dari_main += 1
17+
id_antrian_baru = id_terakhir_dari_main
18+
19+
data_baru = [id_antrian_baru, nama_pengunjung, nama_santri, daerah_asal]
20+
21+
list_kunjungan_dari_main.append(data_baru)
22+
23+
print(f"\nBerhasil! Data pengunjung '{nama_pengunjung}' telah ditambahkan.")
24+
print(f"ID Antrian Anda adalah: {id_antrian_baru}")
25+
26+
return id_antrian_baru
27+
28+
def tampilkan_pengunjung(list_kunjungan_dari_main):
29+
print("\n Daftar Seluruh Kunjungan Santri")
30+
31+
if not list_kunjungan_dari_main:
32+
print("Belum ada data yang terdaftar.")
33+
return
34+
35+
daftar_daerah = ["sumatra", "kalimantan", "jawa"]
36+
for daerah_target in daftar_daerah:
37+
print(f"\nDAERAH {daerah_target.upper()}")
38+
39+
data_ditemukan_di_daerah_ini = False
40+
for data in list_kunjungan_dari_main:
41+
if data[3] == daerah_target:
42+
print(f"ID: {data[0]} | Nama: {data[1]} | Menjenguk: {data[2]}")
43+
data_ditemukan_di_daerah_ini = True
44+
if not data_ditemukan_di_daerah_ini:
45+
print(f" (Tidak ada pengunjung dari {daerah_target})")
46+
47+
def hapus_pengunjung(list_kunjungan_dari_main):
48+
49+
print("\nHapus Data Pengunjung")
50+
if not list_kunjungan_dari_main:
51+
print("Belum ada data.")
52+
return
53+
54+
id_input_str = input("Masukkan ID Antrian: ")
55+
input_valid = True
56+
if len(id_input_str) == 0:
57+
input_valid = False
58+
else:
59+
for karakter in id_input_str:
60+
if karakter not in "0123456789":
61+
input_valid = False
62+
break
63+
if not input_valid:
64+
print("ID Antrian harus berupa angka positif.")
65+
return
66+
67+
id_hapus = int(id_input_str)
68+
69+
data_yang_akan_dihapus = None
70+
71+
for data in list_kunjungan_dari_main:
72+
if data[0] == id_hapus:
73+
data_yang_akan_dihapus = data
74+
break
75+
76+
if data_yang_akan_dihapus:
77+
list_kunjungan_dari_main.remove(data_yang_akan_dihapus)
78+
print(f"Data dengan ID Antrian {id_hapus} telah berhasil dihapus.")
79+
else:
80+
print(f"Data dengan ID Antrian {id_hapus} tidak ditemukan.")
81+
82+
def main():
83+
list_kunjungan_lokal = []
84+
id_terakhir_lokal = 0
85+
86+
while True:
87+
print("\nSistem Antrian Kunjungan Santri")
88+
print("1. Tambah")
89+
print("2. Tampilkan")
90+
print("3. Hapus")
91+
print("4. Keluar")
92+
93+
pilihan = input("pilih (1-4): ")
94+
95+
if pilihan == '1':
96+
id_terakhir_lokal = tambah_pengunjung(list_kunjungan_lokal, id_terakhir_lokal)
97+
98+
elif pilihan == '2':
99+
tampilkan_pengunjung(list_kunjungan_lokal)
100+
101+
elif pilihan == '3':
102+
hapus_pengunjung(list_kunjungan_lokal)
103+
104+
elif pilihan == '4':
105+
print("\nKamu sudah keluar program.")
106+
break
107+
else:
108+
print("\nHarap masukkan angka 1, 2, 3, atau 4.")
109+
110+
if __name__ == "__main__":
111+
main()
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
def gabung_urut_tuple(t1, t2):
2+
gabungan = t1 + t2
3+
4+
unik = []
5+
for angka in gabungan:
6+
sudah_ada = False
7+
for u in unik:
8+
if u == angka:
9+
sudah_ada = True
10+
break
11+
if not sudah_ada:
12+
unik.append(angka)
13+
14+
for i in range(len(unik) - 1):
15+
for j in range(i + 1, len(unik)):
16+
if unik[i] < unik[j]:
17+
temp = unik[i]
18+
unik[i] = unik[j]
19+
unik[j] = temp
20+
21+
return tuple(unik)
22+
23+
t1 = (3, 1, 4)
24+
t2 = (1, 5, 9)
25+
26+
hasil_akhir = gabung_urut_tuple(t1, t2)
27+
28+
print(f"Tuple pertama: {t1}")
29+
print(f"Tuple kedua: {t2}")
30+
print(f"Hasil gabungan (unik, urut menurun): {hasil_akhir}")
31+
32+
print("-" * 20)
33+
34+
t3 = (9, 0, 5, 1, 10, 2, 0)
35+
t4 = (8, 5, 2, 3, 7)
36+
hasil_akhir_2 = gabung_urut_tuple(t3, t4)
37+
print(f"Tuple ketiga: {t3}")
38+
print(f"Tuple keempat: {t4}")
39+
print(f"Hasil gabungan (unik, urut menurun): {hasil_akhir_2}")
40+
41+
t5 =(12,10,11)
42+
t6 =(14,11,13)
43+
hasil_akhir_3 =gabung_urut_tuple(t5, t6)
44+
print(f"Tuple ketiga: {t5}")
45+
print(f"Tuple keempat: {t6}")
46+
print(f"Hasil gabungan (unik, urut menurun): {hasil_akhir_3}")
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
def cek_input_numerik(teks_input):
2+
if len(teks_input) == 0:
3+
return False
4+
5+
for huruf in teks_input:
6+
if huruf not in "0123456789":
7+
return False
8+
9+
return True
10+
11+
def sisip_nilai(data_list):
12+
print("\n1. Tambah Angka")
13+
teks_input = input("Masukkan angka (positif) yang akan ditambah: ")
14+
15+
if cek_input_numerik(teks_input):
16+
nilai = int(teks_input)
17+
data_list.append(nilai)
18+
print(f"Angka {nilai} berhasil ditambahkan.")
19+
else:
20+
print("Tidak valid, Harap masukkan angka positif.")
21+
22+
def cetak_list(data_list):
23+
print("\n2. Tampilkan Deretan Angka")
24+
25+
if not data_list:
26+
print("Deretan masih kosong.")
27+
return False
28+
else:
29+
print(f"Deretan Anda saat ini: {data_list}")
30+
return True
31+
32+
def ganti_nilai(data_list):
33+
print("\n3. Ubah Angka")
34+
if not cetak_list(data_list):
35+
return
36+
37+
teks_indeks = input("Masukkan nomor urut (indeks) yang akan diubah (dimulai dari 0): ")
38+
39+
if not cek_input_numerik(teks_indeks):
40+
print("Input indeks tidak valid! Harus berupa angka.")
41+
return
42+
43+
posisi = int(teks_indeks)
44+
45+
total_data = len(data_list)
46+
if posisi < 0 or posisi >= total_data:
47+
print(f"Indeks {posisi} di luar jangkauan! Indeks yang valid: 0 sampai {total_data - 1}")
48+
return
49+
50+
teks_nilai_baru = input(f"Masukkan angka baru untuk menggantikan {data_list[posisi]}: ")
51+
52+
if not cek_input_numerik(teks_nilai_baru):
53+
print("Input nilai baru tidak valid! Harus angka positif.")
54+
return
55+
56+
angka_lama = data_list[posisi]
57+
angka_baru = int(teks_nilai_baru)
58+
59+
data_list[posisi] = angka_baru
60+
61+
print(f"Sukses! Angka {angka_lama} di indeks {posisi} telah diubah menjadi {angka_baru}.")
62+
63+
def buang_nilai(data_list):
64+
print("\n4. Hapus Angka")
65+
if not cetak_list(data_list):
66+
return
67+
68+
teks_indeks = input("Masukkan nomor urut (indeks) yang akan dihapus (dimulai dari 0): ")
69+
70+
if not cek_input_numerik(teks_indeks):
71+
print("Input indeks tidak valid! Harus berupa angka.")
72+
return
73+
74+
posisi = int(teks_indeks)
75+
76+
total_data = len(data_list)
77+
if posisi < 0 or posisi >= total_data:
78+
print(f"Indeks {posisi} di luar jangkauan! Indeks yang valid: 0 sampai {total_data - 1}")
79+
return
80+
81+
nilai_dihapus = data_list[posisi]
82+
83+
del data_list[posisi]
84+
85+
print(f"Sukses! Angka {nilai_dihapus} di indeks {posisi} telah dihapus.")
86+
87+
def periksa_keseimbangan(data_list):
88+
print("\n5. Cek Pembagian Jumlah Sama")
89+
cetak_list(data_list)
90+
91+
total_data = len(data_list)
92+
93+
if total_data == 0:
94+
print("Deretan kosong. Tidak bisa dicek.")
95+
print("Hasil: False")
96+
return
97+
98+
if total_data % 2 != 0:
99+
print("Jumlah angka ganjil, tidak bisa dibagi dua bagian sama rata.")
100+
print("Hasil: False")
101+
return
102+
103+
titik_tengah = total_data // 2
104+
105+
slice_kiri = data_list[:titik_tengah]
106+
slice_kanan = data_list[titik_tengah:]
107+
108+
tuple_kiri = tuple(slice_kiri)
109+
tuple_kanan = tuple(slice_kanan)
110+
111+
total_kiri = sum(tuple_kiri)
112+
total_kanan = sum(tuple_kanan)
113+
114+
print(f"Bagian Kiri: {tuple_kiri}")
115+
print(f"Bagian Kanan: {tuple_kanan}")
116+
print(f"Jumlah Kiri: {total_kiri}")
117+
print(f"Jumlah Kanan: {total_kanan}")
118+
119+
if total_kiri == total_kanan:
120+
print("Jumlah kedua bagian SAMA.")
121+
print("Hasil: True")
122+
else:
123+
print("Jumlah kedua bagian BERBEDA.")
124+
print("Hasil: False")
125+
126+
def jalankan_program():
127+
kumpulan_angka = []
128+
129+
while True:
130+
print("\nProgram Pengecekan Angka")
131+
print("1. Tambah Angka (Create)")
132+
print("2. Tampilkan Angka (Read)")
133+
print("3. Ubah Angka (Update)")
134+
print("4. Hapus Angka (Delete)")
135+
print("5. Cek Pembagian Jumlah Sama")
136+
print("6. Keluar")
137+
138+
menu = input("Silakan pilih menu (1-6): ")
139+
140+
if menu == '1':
141+
sisip_nilai(kumpulan_angka)
142+
143+
elif menu == '2':
144+
cetak_list(kumpulan_angka)
145+
146+
elif menu == '3':
147+
ganti_nilai(kumpulan_angka)
148+
149+
elif menu == '4':
150+
buang_nilai(kumpulan_angka)
151+
152+
elif menu == '5':
153+
periksa_keseimbangan(kumpulan_angka)
154+
155+
elif menu == '6':
156+
print("\nTerima kasih! Program ditutup.")
157+
break
158+
else:
159+
print("\nPilihan tidak valid. Harap masukkan angka 1 sampai 6.")
160+
161+
if __name__ == "__main__":
162+
jalankan_program()

0 commit comments

Comments
 (0)