diff --git a/H071221020/Tugas Praktikum 10/Data.py b/H071221020/Tugas Praktikum 10/Data.py new file mode 100644 index 0000000..2ce3768 --- /dev/null +++ b/H071221020/Tugas Praktikum 10/Data.py @@ -0,0 +1,48 @@ +import re +class Data: + + def __init__(self, name, email, password): + self.name = name + self.email = email + self.password = password + + # Nama + def setName(self, name): + self.name = name + def getName(self): + return self.name + + # Email dan validasinya + def setEmail(self, email): + self.email = email + def getEmail(self): + return self.email + + # Password dan validasinya + def setPass(self, password): + self.password = password + def getPass(self): + return self.password + + def save(self, filename): + try: + with open(filename+'.txt','r') as file: + file.read() + with open(filename+'.txt','a') as file: + file.write('Name'.ljust(10)+':'+self.name+'\n') + file.write('Email'.ljust(10)+':'+self.email+'\n') + file.write('Password'.ljust(10)+':'+self.password+'\n') + file.write(50*'='+'\n') + except: + with open(filename+'.txt','a') as file: + file.write(50*'='+'\n') + file.write('Data yang Tersimpan'.center(50)+'\n') + file.write(50*'='+'\n') + file.write('Name'.ljust(10)+':'+self.name+'\n') + file.write('Email'.ljust(10)+':'+self.email+'\n') + file.write('Password'.ljust(10)+':'+self.password+'\n') + file.write(50*'='+'\n') + + def count(filename): + with open(filename+'.txt') as file: + return ((len(file.readlines())//3)-1) \ No newline at end of file diff --git a/H071221020/Tugas Praktikum 10/no1.py b/H071221020/Tugas Praktikum 10/no1.py new file mode 100644 index 0000000..b1ef5e0 --- /dev/null +++ b/H071221020/Tugas Praktikum 10/no1.py @@ -0,0 +1,58 @@ +from Data import Data +import re + +while True: + print('Selamat Datang Silakan Pilih Opsi Menu Anda') + print(' 1. Detail Anda') + print(' 2. Ubah Nama') + print(' 3. Jumlah Data pada File') + print(' 4. Save Data pada File') + print(' 5. Buat Data Baru') + print(' 6. Keluar') + op = int(input('Silakan Pilih Opsi Menu Anda ')) + if op==1: + try: + print(data.getName()) + print(data.getEmail()) + print(data.getPass()) + except: + print('Data saat ini kosong') + elif op==2: + try: + data.getName() + name = input() + data.setName(name) + except: + print('Data saat ini kosong') + elif op==3: + try: + filename = input() + print(Data.count(filename)) + except: + print('Tidak Terdapat File dengan Nama {}.txt'.format(filename)) + elif op==4: + try: + filename = input() + data.save(filename) + print('Berhasil') + delattr(data, 'name') + delattr(data, 'email') + delattr(data, 'password') + except: + print('Data saat ini kosong') + elif op==5: + name = input() + email = 'True' + password = 'True' + while bool(re.match('^[a-z0-9]+\@student\.unhas\.ac\.id$', email))==False: + email = input() + if bool(re.match('^[a-z0-9]+\@student\.unhas\.ac\.id$', email))==False: + print('Email yang Anda Masukkan Salah') + while bool(re.match('^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$', password))==False: + password = input() + if bool(re.match('^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$', password))==False: + print('Password yang anda masukkan terlalu lemah, gunakan minimal 1 huruf kapital, huruf kecil, dan angka') + data = Data(name, email, password) + elif op==6: + print('SAMPAI JUMPA LAGI') + break diff --git a/H071221020/Tugas Praktikum 10/no4.py b/H071221020/Tugas Praktikum 10/no4.py new file mode 100644 index 0000000..3b6f0f9 --- /dev/null +++ b/H071221020/Tugas Praktikum 10/no4.py @@ -0,0 +1,75 @@ +from abc import ABC, abstractmethod + +class Abs(ABC): + @abstractmethod + def getName(): + pass + +class Person(): + def __init__(self, name, power): + self.name = name + self.power = power + def getName(self): + return self.name + +class Tkgpukul(Person): + def __init__(self, name, power): + super().__init__(name, power) + self.kekuatan = 50 + def Menyekiti(self, target): + target.power-=self.kekuatan + def MintaTolong(self): + self.power+=30 + def getPower(self): + return self.power + +class Tkgtendang(Person): + def __init__(self, name, power): + super().__init__(name, power) + self.kekuatan = 75 + def Menyekiti(self, target): + target.power-=self.kekuatan + def MintaTolong(self): + self.power+=15 + def getPower(self): + return self.power + +op1 = int(input('Masukkan pilihan pemain 1: ')) +if op1==1: + name_1 = input('Masukkan nama: ') + player_1 = Tkgpukul(name_1, 500) +elif op1==2: + name_1 = input('Masukkan nama: ') + player_1 = Tkgtendang(name_1, 350) + +op2 = int(input('Masukkan pilihan pemain 2: ')) +if op1==1: + name_2 = input('Masukkan nama: ') + player_2 = Tkgpukul(name_2, 500) +elif op1==2: + name_2 = input('Masukkan nama: ') + player_2 = Tkgtendang(name_2, 350) + +print(50*'=') +print('WAKTUNYA BERMAIN'.center(50)) +print(50*'=') + +while True: + p1 = int(input(f'apa yang akan dilakukan {name_1}? ')) + if p1==1: + player_1.Menyekiti(player_2) + print(f'sisa power {name_2}: {player_2.getPower()}') + elif p1==2: + player_1.MintaTolong() + print(f'power {name_1} menjadi: {player_1.getPower()}') + + p2 = int(input(f'apa yang akan dilakukan {name_2}? ')) + if 2==1: + player_2.Menyekiti(player_1) + print(f'sisa power {name_1}: {player_1.getPower()}') + elif p2==2: + player_2.MintaTolong() + print(f'power {name_2} menjadi: {player_2.getPower()}') + maulagi = int(input('mau lagi? ')) + if maulagi==0: + break \ No newline at end of file diff --git a/H071221020/Tugas Praktikum 7/no1.PY b/H071221020/Tugas Praktikum 7/no1.PY new file mode 100644 index 0000000..bfd0a80 --- /dev/null +++ b/H071221020/Tugas Praktikum 7/no1.PY @@ -0,0 +1,14 @@ +#AAAAAAAAAAbbbbbbbbbb2222222222444444444413 57 +#adfhladkjfhladdfs697adfs86ad7f69a9sdf876 +import re +x=input() +bag1=x[0:40] +bag2=x[40:46] +pat1='^(([a-zA-Z]|(2|4|6|8|0)){40})$' +pat2='((([\s1359])){5})$' +res1=re.match(pat1,bag1) +res2=re.match(pat2,bag2) +if res1 and res2: + print('true') +else: + print('false') diff --git a/H071221020/Tugas Praktikum 7/no2.py b/H071221020/Tugas Praktikum 7/no2.py new file mode 100644 index 0000000..0b6939c --- /dev/null +++ b/H071221020/Tugas Praktikum 7/no2.py @@ -0,0 +1,32 @@ + +import re +x = int(input()) #input jumlah baris +ipl = [] #list kosong umtuk diisi hasil input +for i in range(0,x): #perulangan jumlah baris inputan + ip = input() #inpiutan ip + ipl.append(ip) #memasukkan input ke ipl +for j in ipl: #perulangan untuk pengecekan + i4=False + i6=False + if re.match('^((\d|[a-f]){1,4}:){7}(\d|[a-f]){1,4}$',j): + i6=True + else: + i4 = re.match('^((((\d){1,3})(\.)){3})((\d){1,3})$',j) + cek=j.split('.') #dipisah untuk pengecekan jumlah di i4 + jum=[] #list kosong untuk menyimpan elemen yang dipisah dalam tipe int + try: #untuk menangani eror apabila inputan bukan angka + for k in cek: + k=int(k) + jum.append(k) + if max(jum)<=255 and i4: #memerikasa jumlah dan kecocokan i4 + i4=True + else: + i4=False + except ValueError: + i4=False + if i4: + print('IPv4') + elif i6: + print('IPv6') + else: + print('Bukan IP Address') \ No newline at end of file diff --git a/H071221020/Tugas Praktikum 8/no1.py b/H071221020/Tugas Praktikum 8/no1.py new file mode 100644 index 0000000..20b4924 --- /dev/null +++ b/H071221020/Tugas Praktikum 8/no1.py @@ -0,0 +1,42 @@ +class Bio: + + def __init__(self, name, age, isMale): + self.name=name + self.age=age + self.isMale=isMale + + def setName(self, name): + self.name=name + + def getName(self): + return self.name + + def setAge(self, age): + self.age=age + + def getAge(self): + return self.age + + def setGender(self): + self.isMale=isMale + + def getGender(self): + if self.isMale==True: + return 'Laki-Laki' + else: + return 'Perempuan' + +name=input('name: ') +age=int(input('age: ')) +isMale=bool(input('isMale: ')) + +bio=Bio(name, age, isMale) + +bio.setName(bio.getName()) +print(bio.getName()) + +bio.setAge(bio.getAge()) +print(bio.getAge()) + +bio.setGender() +print(bio.getGender()) diff --git a/H071221020/Tugas Praktikum 8/no2.py b/H071221020/Tugas Praktikum 8/no2.py new file mode 100644 index 0000000..a2ea08e --- /dev/null +++ b/H071221020/Tugas Praktikum 8/no2.py @@ -0,0 +1,42 @@ +class Kubus: + + def __init__(self, panjang, lebar, tinggi): + self.panjang=panjang + self.lebar=lebar + self.tinggi=tinggi + + def setPanjang(self, panjang): + self.panjang=panjang + + def setLebar(self, lebar): + self.lebar=lebar + + def setTinggi(self, tinggi): + self.tinggi=tinggi + + def setMassa(self, massa): + self.massa=massa + + def getMassaJenis(self): + return self.massa/(self.panjang*self.lebar*self.tinggi) + + +lebar = float(input()) +tinggi = float(input()) +panjang = float(input()) +massa = float(input()) + +kubus = Kubus(lebar, tinggi, panjang) + +kubus.setMassa(massa) +print("Massa Jenis =", kubus.getMassaJenis()) + +kubus.setMassa(massa*2) +print("Massa Jenis =", kubus.getMassaJenis()) + +kubus.setPanjang(10) +kubus.setLebar(10) +kubus.setTinggi(10) +kubus.setMassa(50) + +print("Massa Jenis =", kubus.getMassaJenis()) \ No newline at end of file diff --git a/H071221020/Tugas Praktikum 9/hero.py b/H071221020/Tugas Praktikum 9/hero.py new file mode 100644 index 0000000..598c663 --- /dev/null +++ b/H071221020/Tugas Praktikum 9/hero.py @@ -0,0 +1,66 @@ +class Human: + def __init__(self, name, pos_x): + self.name = name + self.__pos_x = pos_x + # self.arah = arah + def setMovement(self, arah): + if self.arah == 'L': + self.__pos_x = self.__pos_x - self._speed + elif self.arah == 'R': + self.__pos_x = 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 = target._health - self._power + def setPower(self, power): + self._power = power + def getPower(self): + return self._power + def setHealth(self, health): + self._health = health + def getHealth(self): + return self._health + def setPower(self, armor): + self._armor = armor + def getArmor(self): + return self._armor + def setSpeed(self, speed): + self._speed = speed + 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._power = 32 + self._armor = 45 + target._health = target._health - self._power +class Assasin(Hero): + def __init__(self, name, pos_x): + super().__init__(name, pos_x) + self._power = 35 + self._speed = 4 + def special(self, target): + self._power = 42 + self._speed = 7 + target._health = 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 = target._health + 150 diff --git a/H071221020/Tugas Praktikum 9/no2.py b/H071221020/Tugas Praktikum 9/no2.py new file mode 100644 index 0000000..c5ca588 --- /dev/null +++ b/H071221020/Tugas Praktikum 9/no2.py @@ -0,0 +1,57 @@ +from hero import Warrior, Assasin, Support +warrior = Warrior("bambang", pos_x=10) +assasin = Assasin("joko", pos_x=25) +support = Support("udin",pos_x=30) +# sebelum +print("health (before)", warrior.getHealth()) +assasin.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()) + +# SPECIAL +print('===SPECIAL===') + +# sebelum +print('warrior>assasin') +print("Warrior (power)", warrior.getPower()) +print("Warrior (armor) : ", warrior.getArmor()) +print(assasin.getHealth()) +warrior.special(assasin) +# sesudah +print("Warrior (power)", warrior.getPower()) +print("Warrior (armor) : ", warrior.getArmor()) +print(assasin.getHealth()) + +print('=====================') + +# sebelum +print('assasin>support') +print("Assasin (power)", assasin.getPower()) +print("Assasin (armor) : ", assasin.getArmor()) +print(support.getHealth()) +assasin.special(support) +# sesudah +print("Assasin (power)", assasin.getPower()) +print("Assasin (armor) : ", assasin.getArmor()) +print(support.getHealth()) + +print('=======================') + +#sebelum +print('support>warrior') +print("Warrior (health)", warrior.getHealth()) +print("Support (speed) : ", support.getSpeed()) + +support.special(warrior) + +#sesudah +print("Warrior (health)", warrior.getHealth()) +print("Support (speed : ", support.getSpeed())