From 83f61b37a6efef240d1c2c7c91dacfcda2f4c6ee Mon Sep 17 00:00:00 2001 From: Xomniacs Date: Fri, 11 Apr 2025 17:21:30 +0700 Subject: [PATCH 1/3] Mengumpulkan Modul --- .../Hewan.py | 88 +++++++++++++++++++ .../Mahasiswa.py | 23 +++++ .../Manusia.py | 23 +++++ 3 files changed, 134 insertions(+) create mode 100644 modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Hewan.py create mode 100644 modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Mahasiswa.py create mode 100644 modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Manusia.py diff --git a/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Hewan.py b/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Hewan.py new file mode 100644 index 0000000..c496c25 --- /dev/null +++ b/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Hewan.py @@ -0,0 +1,88 @@ +class Kucing: + def __init__(self, nama, warna, umur): + self.nama = nama + self.warna = warna + self.umur = umur + + def mengeong(self): + print(f"Kucing {self.nama} mengeong meminta makan") + + def tidur(self): + print(f"Kucing {self.nama} tidur di sofa") + + def tampilkan(self): + print(f"Nama kucing: {self.nama}, warna: {self.warna}, umur: {self.umur} tahun") + self.mengeong() + self.tidur() + +class Rakun: + def __init__(self, nama, kebiasaan, habitat): + self.nama = nama + self.kebiasaan = kebiasaan + self.habitat = habitat + + def mencuri_makanan(self): + print(f"Rakun {self.nama} mencari makanan dari tempat sampah") + + def bersembunyi(self): + print(f"Rakun {self.nama} bersembunyi di {self.habitat}") + + def tampilkan(self): + print(f"Nama rakun: {self.nama}, kebiasaan: {self.kebiasaan}, habitat: {self.habitat}") + self.mencuri_makanan() + self.bersembunyi() + +class Rubah: + def __init__(self, nama, warna_bulu, kecepatan): + self.nama = nama + self.warna_bulu = warna_bulu + self.kecepatan = kecepatan + + def berburu(self): + print(f"Rubah {self.nama} berburu di hutan dengan kecepatan {self.kecepatan} km/jam") + + def melolong(self): + print(f"Rubah {self.nama} melolong di malam hari") + + def tampilkan(self): + print(f"Nama rubah: {self.nama}, warna bulu: {self.warna_bulu}, kecepatan: {self.kecepatan} km/jam") + self.berburu() + self.melolong() + +data_hewan = [] + +while True: + jumlah = input("Masukkan jumlah data yang ingin diinput per jenis hewan: ") + + if jumlah.isdigit(): + jumlah = int(jumlah) + + for i in range(jumlah): + print(f"\nInput data kucing ke {i+1}") + nama = input("Nama kucing: ") + warna = input("Warna kucing: ") + umur = input("Umur kucing: ") + data_hewan.append(Kucing(nama, warna, umur)) + + for i in range(jumlah): + print(f"\nInput data rakun ke {i+1}") + nama = input("Nama rakun: ") + kebiasaan = input("Kebiasaan rakun: ") + habitat = input("Habitat rakun: ") + data_hewan.append(Rakun(nama, kebiasaan, habitat)) + + for i in range(jumlah): + print(f"\nInput data rubah ke {i+1}") + nama = input("Nama rubah: ") + warna_bulu = input("Warna bulu rubah: ") + kecepatan = input("Kecepatan rubah: ") + data_hewan.append(Rubah(nama, warna_bulu, kecepatan)) + + print("\nData Hewan") + for hewan in data_hewan: + print() + hewan.tampilkan() + break + + else: + print("Input harus berupa angka") \ No newline at end of file diff --git a/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Mahasiswa.py b/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Mahasiswa.py new file mode 100644 index 0000000..dd1dac0 --- /dev/null +++ b/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Mahasiswa.py @@ -0,0 +1,23 @@ +class Mahasiswa: + def __init__(self, nama, nim, jurusan, alamat): + self.nama = nama + self.nim = nim + self.jurusan = jurusan + self.alamat = alamat + + def tampilkan_info(self): + print(f"Nama: {self.nama}, NIM: {self.nim}, Jurusan: {self.jurusan}, Alamat: {self.alamat}") + +print("Masukkan data:") +m1 = Mahasiswa(input("Nama: "), input("NIM: "), input("Jurusan/Prodi: "), input("Alamat: ")) + +print("\nMasukkan data:") +m2 = Mahasiswa(input("Nama: "), input("NIM: "), input("Jurusan/Prodi: "), input("Alamat: ")) + +print("\nMasukkan data:") +m3 = Mahasiswa(input("Nama: "), input("NIM: "), input("Jurusan/Prodi: "), input("Alamat: ")) + +print("\nData Mahasiswa:") +m1.tampilkan_info() +m2.tampilkan_info() +m3.tampilkan_info() \ No newline at end of file diff --git a/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Manusia.py b/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Manusia.py new file mode 100644 index 0000000..783597f --- /dev/null +++ b/modul-1/PROJECT1_240441100147_RevanNovandaAnanditaYahya/Manusia.py @@ -0,0 +1,23 @@ +class Manusia: + def __init__(self, nama, umur, alamat): + self.nama = nama + self.umur = umur + self.alamat = alamat + + def berjalan(self): + print(f"{self.nama}, yang berumur {self.umur}, dan yang beralamat {self.alamat} sedang berjalan") + + def berlari(self): + print(f"{self.nama}, yang berumur {self.umur}, dan yang beralamat {self.alamat} sedang berlari") + +manusia1 = Manusia("Revan", 19, "Kediri") +manusia2 = Manusia("Salmon", 20, "Lamongan") +manusia3 = Manusia("Dhani", 19, "Lamongan") +manusia4 = Manusia("Jois", 20, "Gresik") +manusia5 = Manusia("Khapi", 19, "Gresik") + +manusia1.berlari() +manusia2.berlari() +manusia3.berlari() +manusia4.berjalan() +manusia5.berjalan() \ No newline at end of file From 282c81e510b2bc8da28e1945eadb8c24d0351561 Mon Sep 17 00:00:00 2001 From: Xomniacs Date: Fri, 18 Apr 2025 18:23:25 +0700 Subject: [PATCH 2/3] mengumpulkan modul 2 --- .../Method.py | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 modul-2/PROJECT2_240441100147_RevanNovandaAnanditaYahya/Method.py diff --git a/modul-2/PROJECT2_240441100147_RevanNovandaAnanditaYahya/Method.py b/modul-2/PROJECT2_240441100147_RevanNovandaAnanditaYahya/Method.py new file mode 100644 index 0000000..d001301 --- /dev/null +++ b/modul-2/PROJECT2_240441100147_RevanNovandaAnanditaYahya/Method.py @@ -0,0 +1,153 @@ +class Mahasiswa: + jumlah_mahasiswa = 0 + + def __init__(self, nama, nim, prodi): + self.nama = nama + self.nim = nim + self.prodi = prodi + self.matkul = [] + Mahasiswa.jumlah_mahasiswa += 1 + + def tambah_matkul(self, matkul): + self.matkul.append(matkul) + + def tampilkan_biodata(self): + print(f"Nama: {self.nama}") + print(f"NIM: {self.nim}") + print(f"Prodi: {self.prodi}") + if self.matkul: + print("Mata Kuliah yang diambil:") + for matkul in self.matkul: + print(f"- {matkul.nama}") + + @classmethod + def tampilkan_jumlah_mahasiswa(cls): + print(f"Jumlah mahasiswa yang sudah dibuat: {cls.jumlah_mahasiswa}") + + @staticmethod + def validasi_nim(nim): + if int(nim[:2]) == 23 and len(nim) == 10: + return nim + else: + return + +class Matakuliah: + def __init__(self, kode, nama, sks): + self.kode = kode + self.nama = nama + self.sks = sks + + @staticmethod + def validasi_sks(sks): + return sks in [2, 3] + +class Kampus: + def __init__(self, nama, alamat): + self.nama = nama + self.alamat = alamat + + def tampilkan_info_kampus(self): + print(f"Nama Kampus: {self.nama}") + print(f"Alamat Kampus: {self.alamat}") + + @staticmethod + def validasi_nama_kampus(nama): + return not any(char.isdigit() for char in nama) + +def data_mahasiswa(): + while True: + nama = input("Masukkan nama mahasiswa: ") + + while True: + nim = input("Masukkan NIM mahasiswa (diawali '23' dan berisi 10 digit): ") + if Mahasiswa.validasi_nim(nim): + break + else: + print("Masukkan NIM dengan awalan '23' dan harus berisi 10 digit") + + prodi = input("Masukkan prodi mahasiswa: ") + return Mahasiswa(nama, nim, prodi) + +def data_kampus(): + while True: + while True: + nama = input("Masukkan nama kampus (tanpa angka): ") + if Kampus.validasi_nama_kampus(nama): + break + else: + print("Masukkan nama kampus tanpa angka.") + + alamat = input("Masukkan alamat kampus: ") + return Kampus(nama, alamat) + +matkul_list = [ + Matakuliah("SI01", "PBO", 3), + Matakuliah("SI02", "PBD", 3), + Matakuliah("SI03", "B.Inggris", 3), + Matakuliah("SI04", "PBW", 3), + Matakuliah("SI05", "Ebussines", 2), + Matakuliah("SI06", "Alpro", 3), + Matakuliah("SI07", "APB", 2), + Matakuliah("SI08", "DMJ", 3) +] + +mahasiswa_list = [] +while True: + mahasiswa = data_mahasiswa() + mahasiswa_list.append(mahasiswa) + + if len(mahasiswa_list) < 6: + print(f"Data minimal belum tercapai") + else: + tambah = input("Data minimal sudah tercapai, tambah data? (ya/tidak): ") + if tambah != "ya": + break + +for mhs in mahasiswa_list: + print(f"\n{mhs.nama}, pilih mata kuliah:") + while len(mhs.matkul) < 4: + print(f"Pilihan Mata Kuliah ({len(mhs.matkul)}):") + for i, matkul in enumerate(matkul_list, 1): + print(f"{i}. {matkul.nama} ({matkul.sks} SKS)") + + try: + pilihan = int(input("Pilih mata kuliah: ")) + if 1 <= pilihan <= len(matkul_list): + mhs.tambah_matkul(matkul_list[pilihan - 1]) + else: + print("Pilihan tidak valid") + except ValueError: + print("Masukkan input yang sesuai") + +kampus_list = [] +while True: + kampus = data_kampus() + kampus_list.append(kampus) + + if len(kampus_list) < 1: + print("Data minimal 1") + else: + tambah = input("Data minimal sudah tercapai, tambah data? (ya/tidak): ") + if tambah != "ya": + break + + +print("\nData Mahasiswa dan Mata Kuliah yang diambil") +for mhs in mahasiswa_list: + mhs.tampilkan_biodata() + print() + +print("\nData Mata Kuliah") +for matkul in matkul_list: + print(f"Kode: {matkul.kode}, Nama: {matkul.nama}, SKS: {matkul.sks}") +print() + +print("\nData Kampus") +for kampus in kampus_list: + kampus.tampilkan_info_kampus() + print() + +print("Validasi Data Kampus") +for kampus in kampus_list: + kampus.tampilkan_info_kampus() + print("Validasi nama kampus:", Kampus.validasi_nama_kampus(kampus.nama)) \ No newline at end of file From b8aa1ae2c29cce3d7586a90f2a130547d38160ff Mon Sep 17 00:00:00 2001 From: Xomniacs Date: Fri, 2 May 2025 17:50:13 +0700 Subject: [PATCH 3/3] Modul 3 --- .../Karyawan.py | 79 ++++++++++++++ .../Pengiriman.py | 103 ++++++++++++++++++ 2 files changed, 182 insertions(+) create mode 100644 modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Karyawan.py create mode 100644 modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Pengiriman.py diff --git a/modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Karyawan.py b/modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Karyawan.py new file mode 100644 index 0000000..efe665d --- /dev/null +++ b/modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Karyawan.py @@ -0,0 +1,79 @@ +class Karyawan: + def __init__(self, nama, gaji, departemen): + self.nama = nama + self.gaji = gaji + self.departemen = departemen + + def info(self): + print(f"Nama: {self.nama}") + print(f"Gaji: {self.gaji}") + print(f"Departemen: {self.departemen}") + +class KaryawanTetap(Karyawan): + def __init__(self, nama, gaji, departemen, tunjangan): + super().__init__(nama, gaji, departemen) + self.tunjangan = tunjangan + + def info(self): + super().info() + print(f"Tunjangan: {self.tunjangan}") + print("Status: Karyawan Tetap\n") + +class KaryawanHarian(Karyawan): + def __init__(self, nama, gaji, departemen, jam_kerja): + super().__init__(nama, gaji, departemen) + self.jam_kerja = jam_kerja + + def info(self): + super().info() + print(f"Jam Kerja: {self.jam_kerja} jam/hari") + print("Status: Karyawan Harian\n") + +class ManajemenKaryawan: + def __init__(self): + self.daftar_karyawan = [] + + def tambah_karyawan(self, karyawan): + self.daftar_karyawan.append(karyawan) + + def tampilkan_karyawan(self): + print("\n=== Daftar Semua Karyawan ===") + if not self.daftar_karyawan: + print("Karyawan belum ada") + else: + for i, karyawan in enumerate(self.daftar_karyawan, start=1): + print(f"\nKaryawan {i}:") + karyawan.info() + +def input_karyawan(manajemen): + while True: + print("Tambah Karyawan") + jenis = input("Karyawan Tetap(1) atau Karyawan Harian(2): ") + + nama = input("Nama: ") + gaji = int(input("Gaji: ")) + departemen = input("Departemen: ") + + if jenis == "1": + tunjangan = int(input("Tunjangan: ")) + karyawan = KaryawanTetap(nama, gaji, departemen, tunjangan) + elif jenis == "2": + jam_kerja = int(input("Jam Kerja: ")) + karyawan = KaryawanHarian(nama, gaji, departemen, jam_kerja) + else: + print("Input salah") + continue + + manajemen.tambah_karyawan(karyawan) + + lanjut = input("Tambah karyawan lagi? (ya/tidak): ") + if lanjut != "ya": + break + +def main(): + manajemen = ManajemenKaryawan() + input_karyawan(manajemen) + manajemen.tampilkan_karyawan() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Pengiriman.py b/modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Pengiriman.py new file mode 100644 index 0000000..0d66fee --- /dev/null +++ b/modul-3/PROJECT3_240441100147_RevanNovandaAnanditaYahya/Pengiriman.py @@ -0,0 +1,103 @@ +class Pengiriman: + def __init__(self, asal, tujuan): + self.asal = asal + self.tujuan = tujuan + + def waktu_pengiriman(self): + return 5 + +class Darat(Pengiriman): + def __init__(self, asal, tujuan, kendaraan): + super().__init__(asal, tujuan) + self.kendaraan = kendaraan + + def waktu_pengiriman(self): + if self.kendaraan == "1": + return 3 + elif self.kendaraan == "2": + return 4 + elif self.kendaraan == "3": + return 7 + else: + print("Tidak ada pilihan kendaraan") + return 0 + +class Udara(Pengiriman): + def __init__(self, asal, tujuan, maskapai): + super().__init__(asal, tujuan) + self.maskapai = maskapai + + def waktu_pengiriman(self): + if self.maskapai == "1": + return 1 + elif self.maskapai == "2": + return 2 + else: + print("Tidak ada pilihan maskapai") + return 0 + +class Internasional(Darat, Udara): + def __init__(self, asal, tujuan, kendaraan, maskapai, metode): + self.asal = asal + self.tujuan = tujuan + self.kendaraan = kendaraan + self.maskapai = maskapai + self.metode = metode + + def waktu_pengiriman(self): + waktu = 0 + tujuan_dalam_negeri = ["indonesia", "surabaya", "bandung", "gresik", "lamongan", + "kediri", "jombang", "jogja", "bali", "lumajang", "malang", + "pasuruan","jakarta","madura","sidoarja","jember","ponorogo", + "probolinggo","pandaan","bekasi","medan","tuban"] + + if self.metode == "darat": + waktu = Darat.waktu_pengiriman(self) + elif self.metode == "udara": + waktu = Udara.waktu_pengiriman(self) + elif self.metode == "gabungan": + waktu = Darat.waktu_pengiriman(self) + Udara.waktu_pengiriman(self) + else: + waktu = 0 + + if self.tujuan.lower() not in tujuan_dalam_negeri: + waktu += 3 + + return waktu + +print("\n==Pengiriman==") +asal = input("Masukkan asal pengiriman: ") +tujuan = input("Masukkan tujuan pengiriman (dalam/luar negeri): ") + +while True: + print("\nPilih jenis kendaraan:") + print("1. Motor") + print("2. Mobil") + print("3. Truk") + kendaraan = input("Masukkan pilihan kendaraan (1/2/3): ") + if kendaraan in ["1", "2", "3"]: + break + else: + print("Tidak ada dalam pilihan") + +while True: + print("\nPilih maskapai:") + print("1. Garuda") + print("2. Lion Air") + maskapai = input("Masukkan pilihan maskapai (1/2): ") + if maskapai in ["1", "2"]: + break + else: + print("Tidak ada pilihan") + +while True: + print("\nPilih metode pengiriman:") + print("darat / udara / gabungan") + metode = input("Masukkan metode: ").lower() + if metode in ["darat", "udara", "gabungan"]: + break + else: + print("Metode tidak tersedia") + +pengiriman = Internasional(asal, tujuan, kendaraan, maskapai, metode) +print(f"\nEstimasi waktu pengiriman: {pengiriman.waktu_pengiriman()} hari") \ No newline at end of file