-
Notifications
You must be signed in to change notification settings - Fork 0
/
tareaFinal.py
61 lines (48 loc) · 1.78 KB
/
tareaFinal.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/python
import re
class Empleado:
def __init__(self, nombre, dui, nit, sueldo, tiempo_trabajo):
self.nombre = nombre
self.dui = dui
self.nit = nit
self.sueldo = sueldo
self.tiempo_trabajo = tiempo_trabajo #en años
self.aguinaldo = self.calcular_aguinaldo()
def datos_validos(self):
if (not re.match("\d{9}", self.dui)):
print("DUI debe ser un valor numérico de 9 dígitos: ", self.dui)
return False
if (not re.match("\d{14}", self.nit)):
print("NIT debe ser un valor numérico de 14 dígitos: ", self.nit)
return False
if (self.sueldo <= 0.00):
print("Sueldo debe ser un valor positivo: ", self.sueldo)
return False
if (self.tiempo_trabajo < 0):
print("Los anios de trabajo debe ser un valor positivo: ", self.tiempo_trabajo)
return False
return True
def to_string(self):
print(f'Empleado [nombre: {self.nombre}, dui: {self.dui[:8]}-{self.dui[8]}, nit: {self.nit[:4]}-{self.nit[4:10]}-{nit[10:13]}-{nit[13]}, sueldo: ${self.sueldo}, años trabajo: {self.tiempo_trabajo}, aguinaldo: {self.aguinaldo}]')
def calcular_aguinaldo(self):
if (self.datos_validos()):
dias = 0
if (self.tiempo_trabajo >= 1 and self.tiempo_trabajo <= 3):
dias = 15
if (self.tiempo_trabajo >= 4 and self.tiempo_trabajo <= 10):
dias = 19
if (self.tiempo_trabajo > 10):
dias = 21
return (self.sueldo / 30 * dias)
else:
return 0.0
nombre = input("Ingrese el nombre del empleado: ")
dui = input("Ingrese el DUI del empleado (sin guiones): ")
nit = input("Ingrese el NIT del empleado (sin guiones): ")
sueldo = float(input("Ingrese el sueldo del empleado: "))
anios = int(input("Ingrese los años de trabajo: "))
emp = Empleado(nombre, dui, nit, sueldo, anios)
if (emp.datos_validos()):
print(emp.to_string())
else:
print("Datos inválidos")