diff --git a/H071221051/tugas_prak10/prak10_tgs1.py b/H071221051/tugas_prak10/prak10_tgs1.py new file mode 100644 index 0000000..477ecb6 --- /dev/null +++ b/H071221051/tugas_prak10/prak10_tgs1.py @@ -0,0 +1,74 @@ +import re +# from prettytable import PrettyTable +_Data = [] +while True: + print(100*"="+"""\nPILIHAN LAYANAN +1. Detail Anda +2. Ubah Nama +3. Jumlah Data Pada File +4. Save Data pada File +5. Buat Data Baru +6. Keluar """) + _inputan = int(input(100*"="+"\nPilihan : ")); + if _inputan == 1: + if len(_Data) > 0: + print(100*"=") + for i in range(len(_Data)): + for y in range(len(_Data[0])): + print(f'{_Data[i][y]}') + else: + print(100*"="+"\nData saat ini kosong!\n"+100*"=") + elif _inputan == 2: # Mengubah nama dalam list _Data + if len(_Data) != 0: + print(100*"=") + for i in range(len(_Data)): + for y in range(len(_Data[0])): + if y == 1 or y == 2: + continue + print(f'Urutan {i+1} {_Data[i][y]}') + _newName = list(map(str, input("Masukkan Index dan nama baru (Urutan NamaBaru) : ").split())) + _Data[int(_newName[0])-1][0] = "Nama : "+_newName[1] + elif len(_Data) == 0: + print(100*"="+"\nData Tidak Ditemukan!\n"+100*"=") + elif _inputan == 3: + _file = input("Masukkan fIle : ")+".txt" + try: + with open(_file) as baca: + dataFILE = re.findall(r"@student.unhas.ac.id", baca.read()) + print(f"Jumlah Data adalah {dataFILE.count('@student.unhas.ac.id')}") + except FileNotFoundError: + print(100*"="+f"\nTidak Terdapat File Dengan Nama {_file}") + print("Jumlah data pada file = 0\n"+100*"=") + elif _inputan == 4: + if len(_Data) == 0: + print(100*"="+"\nData Sata Ini Kosong!\n"+100*"=") + else: + _FILE = input("Nama File : ")+".txt" + with open(_FILE, "a") as tulis: + tulis.write("\n") + for i in range(len(_Data)): + for y in range(len(_Data[0])): + tulis.write(_Data[i][y]+"\n") + tulis.write(100*"=") + _Data = [] + elif _inputan == 5: + nama = input(100*"="+"\nNama : "); print(100*"=") + while True: + Email = input("Email : ") + if re.search(r"^[a-z0-9]{1,}@student[.]unhas[.]ac[.]id$", Email): + break + else: + print(100*"="+"\nEmail Yang Anda Masukkan salah\n"+100*"=") + while True: + _Pass = input(100*"="+"\nMasukkan Password : "); print(100*"=") + if len(_Pass) > 8: + if re.search('^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$', _Pass): + break + else: + print("Password yang anda masukkan terlalu lemah, gunakan minimal 1 huruf kapital, huruf kecil, dan angka") + else: + print("Password Harus Memiliki 8-20 Karakter") + _Data.insert(len(_Data), ["Nama : " + nama,"E-mail : "+ Email, "Password : "+ _Pass]); print("Berhasil") + elif _inputan == 6: + print(100*"="+"\nSampai Jumpa Lagi\n"+100*"=") + break \ No newline at end of file diff --git a/H071221051/tugas_prak10/prak10_tgs2.py b/H071221051/tugas_prak10/prak10_tgs2.py new file mode 100644 index 0000000..dd5b582 --- /dev/null +++ b/H071221051/tugas_prak10/prak10_tgs2.py @@ -0,0 +1,42 @@ +class Elektronik: + def __init__(self, merk) -> None: + self.harga = 0 + self.merk = merk + + def setHarga(self, harga): + self.harga = harga + + def getHarga(self): + return self.harga + + def nyalakan(self): + print(f"{self.merk} Menyela") + +class Handphone(Elektronik): + def __init__(self, merk, harga): + super().__init__(merk) + self.harga = harga + self.baterai = 5 + + def charge(self): + self.baterai = 100 + + def layar(self): + print(f"{self.merk} Layarnya Kecil") + + +class Laptop(Elektronik): + def __init__(self, merk, harga): + super().__init__(merk) + self.harga = harga + self.baterai = 10 + + def layar(self): + print(f"{self.merk} Layarnya Besar") + + +HP = Handphone("Samsung", 5000) +laptop = Laptop("Asus", 20000) + +HP.layar() +laptop.layar() \ No newline at end of file diff --git a/H071221051/tugas_prak4/prak4_tgs1.py b/H071221051/tugas_prak4/prak4_tgs1.py new file mode 100644 index 0000000..6c3bad0 --- /dev/null +++ b/H071221051/tugas_prak4/prak4_tgs1.py @@ -0,0 +1,18 @@ +def ast1(): + n = int(input("Banyak Element Array : ")) + datalist = [] + for i in range(0,n): + element = int(input("- ")) + datalist.append(element) + + print("Sebelum diurut : ",datalist) + + for i in range(0,n): + for j in range(0,n): + if datalist[i] 1: + return nilai*nilai_f(nilai-1) + elif nilai < 0: + return NoneType + return 1 +print(nilai_f(nilai)) \ No newline at end of file diff --git a/H071221051/tugas_prak5/prak5_tgs1.py b/H071221051/tugas_prak5/prak5_tgs1.py new file mode 100644 index 0000000..03994e8 --- /dev/null +++ b/H071221051/tugas_prak5/prak5_tgs1.py @@ -0,0 +1,18 @@ +matrix_1 = [[int(input ("input nilai matrix pertama index {}, {} :". format (baris, kolom ))) for kolom in range (1,2+1)] for baris in range (1, 2+1)] +matrix_2 = [[int(input ("input nilai matrix pertama index {}, {} :". format (baris, kolom ))) for kolom in range (1,2+1)] for baris in range (1, 2+1)] +muulti = [] + +for x in range(0, len(matrix_1)): + row = [] + for y in range(0, len(matrix_1[0])): + total = 0 + for z in range(0, len(matrix_2)): + total = total + (matrix_1[x][z] * matrix_2[z][y]) + row.append(total) + muulti.append(row) + + +for x in range(0, len(muulti)): + for y in range(0, len(muulti[0])): + print (muulti[x][y], end=' ') + print () \ No newline at end of file diff --git a/H071221051/tugas_prak5/prak5_tgs2.py b/H071221051/tugas_prak5/prak5_tgs2.py new file mode 100644 index 0000000..3614834 --- /dev/null +++ b/H071221051/tugas_prak5/prak5_tgs2.py @@ -0,0 +1,48 @@ +print('=' * 55) +print('Selamat datang! Untuk memulai, silahkan input data anda!') +print('=' * 55) + +nama = input('kamu siapa: ') +umur = int(input('umur mu berapa: ')) +alamat = input('kamu tinggal dimana: ') + +profile = { + 'Nama': nama, + 'Umur': umur, + 'Alamat': alamat +} + +while True: + print('=' * 55) + print(f'Selamat datang {nama}, silahkan pilih opsi') + print('=' * 55) + print('1. Detail anda') + print('2. Ubah Nama') + print('3. Ubah Umur') + print('4. Ubah Alamat') + print('5. Keluar') + print('=' * 55) + opsi =input('Input opsi: ') + print('=' * 55) + if opsi =='1': + print('Data anda adalah') + print('Nama:',profile['Nama']) + print('Umur:',profile['Umur']) + print('Alamat:',profile['Alamat']) + elif opsi == '2': + nama = input('Silahkan input data nama baru: ') + profile['Nama'] = nama + print('Data anda sukses diperbaharui') + elif opsi == '3': + umur = int(input('Silahkan input data umur baru: ')) + profile['Umur'] = umur + print('Data anda sukses diperbaharui') + elif opsi == '4': + alamat = input('Silahkan input data alamat baru: ') + profile['Alamat'] = alamat + print('Data anda sukses diperbaharui') + elif opsi == '5': + print(f'Selamat tinggal {nama}') + break + else: + print('Opsi salah, masukkan ulang opsi yang benar!') \ No newline at end of file diff --git a/H071221051/tugas_prak5/prak5_tgs3.py b/H071221051/tugas_prak5/prak5_tgs3.py new file mode 100644 index 0000000..c7c3103 --- /dev/null +++ b/H071221051/tugas_prak5/prak5_tgs3.py @@ -0,0 +1,13 @@ +x = list(map(int, input("Masukkan Array 1: ").split())) +y = list(map(int, input("Masukkan Array 2: ").split())) ; n = [] +for i in x: + if i in y: + if i not in n: + n.append(i) + +if len(n) == 0: + print (f"tidak ada duplikat") +else: + print(f"Terdapat {len(n)} buah duplikat yaitu {tuple((n))}") + + diff --git a/H071221051/tugas_prak6/prak6_tgs1.py b/H071221051/tugas_prak6/prak6_tgs1.py new file mode 100644 index 0000000..53b8c96 --- /dev/null +++ b/H071221051/tugas_prak6/prak6_tgs1.py @@ -0,0 +1,11 @@ +a = input() +b = input() +c = open(f"{a}.txt","r") +d = c.read() + +try: + with open(f"{b}.txt","w") as file: #f{b} salinan dari file awal + file.write(d) + print('Berhasil') +except: + print('Tidak berhasil') \ No newline at end of file diff --git a/H071221051/tugas_prak6/prak6_tgs2.py b/H071221051/tugas_prak6/prak6_tgs2.py new file mode 100644 index 0000000..2711295 --- /dev/null +++ b/H071221051/tugas_prak6/prak6_tgs2.py @@ -0,0 +1,15 @@ +a = input()+'.txt' +b = input()+'.txt' +try: + with open(a) as asli: + file_as = asli.readlines() #read semua file bentuk list + n = [] + file_as[-1] += " " #untuk mengetahui baris terpanjang dalan len + for x in file_as: + n.append(len(x)) + with open(b, "w") as salinan: + for i in file_as: + salinan.write(i.rjust(max(n))) #rjust untuk list dari kanan #max(n) nilai terpanjang dalam list + print("Berhasil") +except: + print("Invalid") \ No newline at end of file diff --git a/H071221051/tugas_prak6/prak6_tgs3.py b/H071221051/tugas_prak6/prak6_tgs3.py new file mode 100644 index 0000000..4243382 --- /dev/null +++ b/H071221051/tugas_prak6/prak6_tgs3.py @@ -0,0 +1,52 @@ +file = input("Nama file: ") +jumlah = int(input("Jumlah data: ")) + +nama = [] +nim = [] +angkatan = [] + +for i in range(jumlah): #perulangan untuk isi biodata sebanyak jumlah yang kita mau + isi_nama = input('Masukkan Nama: ').replace(' ','_') + if len(isi_nama) <= 20: + nama.append(isi_nama) + else: + print('Gagal') + exit() + isi_nim = input('Masukkan NIM: ') + nim.append(isi_nim) + isi_angkatan = input('Masukkan Angkatan: ') + angkatan.append(isi_angkatan) + +if len(isi_nama) <= 20: + with open(f"{file}.txt","w") as f: + nama_terpanjang = nama[0] + for panjang in nama: #mencari nama yang terpanjang + if len(panjang) > len(nama_terpanjang): + nama_terpanjang = panjang + + f.write('+-'+('-'*len(nama_terpanjang))+'-+') #baris pertama atau paling atas dari tabel + f.write(('-'*12)+'+') + f.write(('-'*10)+'+') + + f.write('\n| Nama'+(' '*(len(nama_terpanjang)-5))+' |') #baris kedua untuk kolom format Nama, NIM, Angkatan + f.write(' NIM'+(' '*(12-4))+'|') + f.write(' Angkatan'+(' '*(10-9))+'|') + + f.write('\n+-'+('-'*len(nama_terpanjang))+'-+') #baris ketiga batas antara format dan isi + f.write(('-'*12)+'+') + f.write(('-'*10)+'+') + + for x in range(jumlah): #baris selanjutnya isi sesuai banyak data yang di input + f.write('\n| ') + f.write(nama[x]) + f.write(' '*(len(nama_terpanjang)-len(nama[x]))+' | ') + f.write(nim[x]) + f.write(' '*(11-len(nim[x]))+'| ') + f.write(angkatan[x]) + f.write((' '*(9 - len(angkatan[x])))+'|') + + f.write('\n+-'+('-'*len(nama_terpanjang))+'-+') #baris paling akhir sebagai penutup + f.write(('-'*12)+'+') + f.write(('-'*10)+'+') + + print('Berhasil') \ No newline at end of file diff --git a/H071221051/tugas_prak7/prak7_tgs1.py b/H071221051/tugas_prak7/prak7_tgs1.py new file mode 100644 index 0000000..5aa7d1b --- /dev/null +++ b/H071221051/tugas_prak7/prak7_tgs1.py @@ -0,0 +1,9 @@ +import re +kondisi = r'^[A-Za-z24680]{40}[13579\s]{5}$' + +s = input() +hasil1 = re.findall(kondisi, s) +if hasil1: + print('true') +else: + print('false') \ No newline at end of file diff --git a/H071221051/tugas_prak7/prak7_tgs2.py b/H071221051/tugas_prak7/prak7_tgs2.py new file mode 100644 index 0000000..6d31090 --- /dev/null +++ b/H071221051/tugas_prak7/prak7_tgs2.py @@ -0,0 +1,24 @@ +import re + +regex_ipv4 = r'(([0-1]?[\d][\d]?|2[0-4][\d]|25[0-5])\.){3}([0-1]?[\d][\d]?|2[0-4][\d]|25[0-5])$' +regex_ipv6 = r'(([\d,A-F,a-f]{1,4}?\:){7})([\d,A-F,a-f]{1,4})$' + +n = int(input('')) +list_address = [] + +for i in range(n): + address = input('') + list_address.append(address) + +print() + +for x in list_address: + ipv4 = re.search(regex_ipv4, x) #ipv4 0-255 terdiri dari 4grup(.) + if ipv4: + print('IPv4') + else: + ipv6 = re.search(regex_ipv6, x) #ipv6 hexadesimal terdiri dari 8 grup(:) + if ipv6: + print('IPv6') + else: + print('Bukan IP Address') \ No newline at end of file diff --git a/H071221051/tugas_prak8/prak8_tgs1.py b/H071221051/tugas_prak8/prak8_tgs1.py new file mode 100644 index 0000000..0bbcb58 --- /dev/null +++ b/H071221051/tugas_prak8/prak8_tgs1.py @@ -0,0 +1,48 @@ +# Program class diagram Person +# nama, umur dan apakah pria? + +class Person: + def __init__(self, nama, umur, oroane): + self.name = nama + self.age = int(umur) + self.isMale = bool(oroane) + + def setAge(self, umur): + self.age = int(umur) + + def getAge(self): + print(self.age) + + def setName(self, nama): + self.name = nama + + def getName(self): + print(self.name) + + def setGender(self, gender): + if gender == 'Male': + self.isMale = True + else: + self.isMale = False + + def getGender(self): + if self.isMale == True: + self.gender = 'Male' + print(self.gender) + else: + self.gender = 'Female' + print(self.gender) + +name = input('Name = ') +age = int(input('Age = ')) +input_isMale = input('Kamu Male? (True or False) = ') +if input_isMale == 'True': + isMale = bool(True) +else: + isMale = bool(False) + +person1 = Person(name, age, isMale) +print() +person1.getName() +person1.getAge() +person1.getGender() \ No newline at end of file diff --git a/H071221051/tugas_prak8/prak8_tgs2.py b/H071221051/tugas_prak8/prak8_tgs2.py new file mode 100644 index 0000000..40f64a5 --- /dev/null +++ b/H071221051/tugas_prak8/prak8_tgs2.py @@ -0,0 +1,42 @@ +# Program class diagram Kubus +# lebar, tinggi, panjang, massa, dan massa jenis + +class Kubus: + def __init__(self, lebar_k, tinggi_k, panjang_k): + self.lebar = float(lebar_k) + self.tinggi = float(tinggi_k) + self.panjang = float(panjang_k) + + def setLebar(self, lebar_k): + self.lebar = float(lebar_k) + + def setTinggi(self, tinggi_k): + self.tinggi = float(tinggi_k) + + def setPanjang(self, panjang_k): + self.panjang = float(panjang_k) + + def setMassa(self, massa_k): + self.massa = float(massa_k) + + def volume(self): + volume = self.panjang * self.lebar * self.tinggi + return volume + + def getMassaJenis(self): + massa_jenis = self.massa / self.volume() + return massa_jenis + +lebar = float(input('Lebar = ')) +tinggi = float(input('Tinggi = ')) +panjang = float(input('Panjang = ')) +massa = float(input('Massa = ')) + +kubus = Kubus(lebar, tinggi, panjang) + +print() +kubus.setMassa(massa) +print("Massa Jenis =", kubus.getMassaJenis()) + +kubus.setMassa(massa*2) +print("Massa Jenis =", kubus.getMassaJenis()) \ No newline at end of file diff --git a/H071221051/tugas_prak8/prak8_tgs3.py b/H071221051/tugas_prak8/prak8_tgs3.py new file mode 100644 index 0000000..40f64a5 --- /dev/null +++ b/H071221051/tugas_prak8/prak8_tgs3.py @@ -0,0 +1,42 @@ +# Program class diagram Kubus +# lebar, tinggi, panjang, massa, dan massa jenis + +class Kubus: + def __init__(self, lebar_k, tinggi_k, panjang_k): + self.lebar = float(lebar_k) + self.tinggi = float(tinggi_k) + self.panjang = float(panjang_k) + + def setLebar(self, lebar_k): + self.lebar = float(lebar_k) + + def setTinggi(self, tinggi_k): + self.tinggi = float(tinggi_k) + + def setPanjang(self, panjang_k): + self.panjang = float(panjang_k) + + def setMassa(self, massa_k): + self.massa = float(massa_k) + + def volume(self): + volume = self.panjang * self.lebar * self.tinggi + return volume + + def getMassaJenis(self): + massa_jenis = self.massa / self.volume() + return massa_jenis + +lebar = float(input('Lebar = ')) +tinggi = float(input('Tinggi = ')) +panjang = float(input('Panjang = ')) +massa = float(input('Massa = ')) + +kubus = Kubus(lebar, tinggi, panjang) + +print() +kubus.setMassa(massa) +print("Massa Jenis =", kubus.getMassaJenis()) + +kubus.setMassa(massa*2) +print("Massa Jenis =", kubus.getMassaJenis()) \ No newline at end of file diff --git a/H071221051/tugas_prak8/prak8_tgs4.py b/H071221051/tugas_prak8/prak8_tgs4.py new file mode 100644 index 0000000..e69de29 diff --git a/H071221051/tugas_prak9/__pycache__/hero.cpython-310.pyc b/H071221051/tugas_prak9/__pycache__/hero.cpython-310.pyc new file mode 100644 index 0000000..8b054d6 Binary files /dev/null and b/H071221051/tugas_prak9/__pycache__/hero.cpython-310.pyc differ diff --git a/H071221051/tugas_prak9/hero.py b/H071221051/tugas_prak9/hero.py new file mode 100644 index 0000000..c524c82 --- /dev/null +++ b/H071221051/tugas_prak9/hero.py @@ -0,0 +1,102 @@ +class Human: + def __init__(self, name, position): + self.name = name + self.__pos_x = position + + def setMovement(self, move): + if move == 'L': + self.__pos_x -= self._speed + elif move == 'R': + self.__pos_x += self._speed + + def getMovement(self): + return self.__pos_x + +class Hero(Human): + def __init__(self, name, pos_x): + super().__init__(name, pos_x) + self._power = 15 + self._health = 400 + self._armor = 15 + self._speed = 3 + + def attack(self, target): + target._health -= self._power + + def getPower(self): + return self._power + + def getHealth(self): + return self._health + + def getArmor(self): + return self._armor + + def getSpeed(self): + return self._speed + +class Warrior(Hero): + def __init__(self, name, pos_x): + super().__init__(name, pos_x) + self._power = 26 + self._armor = 30 + + def special(self, target): + self._armor = 45 + self._power = 32 + target._health -= self._power + +class Assassin(Hero): + def __init__(self, name, pos_x): + super().__init__(name, pos_x) + self._power = 35 + self._speed = 4 + + def special(self, target): + self._speed = 7 + self._power = 42 + target._health -= self._power + +class Support(Hero): + def __init__(self, name, pos_x): + super().__init__(name, pos_x) + self._health = 500 + self._armor = 8 + self._speed = 4 + + def special(self, target): + self._speed = 6 + target._health += 150 + +warrior = Warrior("bambang", pos_x=10) +assassin = Assassin("joko", pos_x=25) +support = Support("udin",pos_x=30) + +# sebelum +print('Position Warrior (before) :', warrior.getMovement()) +warrior.setMovement('L') +# sesudah +print('Position Warrior (after "L") :', warrior.getMovement()) + +# sebelum +print("health (before)", warrior.getHealth()) +assassin.attack(warrior) +# sesudah +print("health (after)", warrior.getHealth()) + +print("-"*10) + +# sebelum +print("Warrior (health)", warrior.getHealth()) +print("Support (speed) : ",support.getSpeed()) + +support.special(warrior) + +# sesudah +print("Warrior (health)", warrior.getHealth()) +print("Support (speed): ",support.getSpeed()) + +# sebelum +print('Position Support (before) :', support.getMovement()) +support.setMovement('R') +print('Position Support (after "R") :', support.getMovement()) \ No newline at end of file diff --git a/H071221051/tugas_prak9/prak9_tgs1.py b/H071221051/tugas_prak9/prak9_tgs1.py new file mode 100644 index 0000000..ffa30ee --- /dev/null +++ b/H071221051/tugas_prak9/prak9_tgs1.py @@ -0,0 +1,34 @@ +from hero import Warrior, Assassin, Support + +warrior = Warrior("bambang", pos_x=10) +assassin = Assassin("joko", pos_x=25) +support = Support("udin",pos_x=30) + +# sebelum +print('Position Warrior (before) :', warrior.getMovement()) +warrior.setMovement('L') +# sesudah +print('Position Warrior (after "L") :', warrior.getMovement()) + +# sebelum +print("health (before)", warrior.getHealth()) +assassin.attack(warrior) +# sesudah +print("health (after)", warrior.getHealth()) + +print("-"*10) + +# sebelum +print("Warrior (health)", warrior.getHealth()) +print("Support (speed) : ",support.getSpeed()) + +support.special(warrior) + +# sesudah +print("Warrior (health)", warrior.getHealth()) +print("Support (speed): ",support.getSpeed()) + +# sebelum +print('Position Support (before) :', support.getMovement()) +support.setMovement('R') +print('Position Support (after "R") :', support.getMovement()) \ No newline at end of file