Subido por Luis Cubero

UPS Nomina Trabajador Contratista Pyhton Funciones 20220303

Anuncio
NOMINA EN PYHTON
"""
63-Se requiere calcular el valor neto a pagar a un trabajador (Contratistas y de Planta) en un
mes, sabiendo que cada trabajador
tiene un sueldo básico y teniendo en cuenta lo siguiente:
A todo trabajador de planta, se le debe descontar el 4% del sueldo básico por concepto de
salud y el 3.8% del sueldo básico por
concepto de pensión.
Si el trabajador es de Planta y su sueldo básico es de menos de $ 437.000 se le debe cancelar $
40.000 adicional por concepto de
auxilio de transporte.
Si el trabajador es de Planta y devenga más de $ 1.750.000 de salario básico, se le descontará
el 1% del sueldo básico por concepto
de Solidaridad Pensional.
Si el trabajador es Contratista, se le debe descontar el 10% por concepto de retención en la
fuente solamente si su salario es
superior a $ 1.500.000.
"""
import os
#inicio de variable
nombre=""
#round redondea a dos decimales
#función que comprueba que es un número ingresado
def esnumero(numero):
try:
float(numero)
return True
except ValueError:
return False
#función contratista calcula su nómina usa parámetros
def contratista(nombre,sueldo):
#imprimir datos
print("\nEmpleado
",nombre)
print("Tipo: Contratista")
print("\nSueldo Base
$ ",sueldo)
#comprueba valor sueldo para calcular retención
if(sueldo > 1500000):
#retención del 10%
retencion=sueldo*(10/100)
else:
retencion=0
#imprime retención
print("Valor retención 10%
$ ",round(retencion,2))
#calcula sueldo final
final=sueldo-retencion
#retorna sueldo final
return final
#función planta calcula su nómina usa parámetros
def planta(nombre,sueldo):
#imprimir datos
print("\nEmpleado
",nombre)
print("Tipo: Planta")
print("\nSueldo Base
$ ",sueldo)
#comprueba valor sueldo menor a 437000 para auxilio
if(sueldo < 437000):
auxilio=4000
else:
auxilio=0
#comprueba sueldo mayor a 1750000 para calculo de solidaridad pensional
if(sueldo > 1750000):
solidaridadpensional=sueldo*(1/100)
else:
solidaridadpensional=0
#calcular salud y pensión
salud=sueldo*(4/100)
pension=sueldo*(3.8/100)
#imprimir resultados
print("\nDescuento por salud 4%
$ ",round(salud,2))
print("Descuento por pensión 3.8%
$ ",round(pension,2))
print("\nAuxilio
$ ",auxilio)
print("\nValor por Solidaridad Pensional 1% $ ",round(solidaridadpensional,2))
#calcula sueldo final
final=(sueldo+auxilio)-salud-pension-solidaridadpensional
#retorna sueldo final
return final
#bucle mientras el valor sea True y siga solicitando el calculo de nómina
while True:
print("SISTEMA DE NÓMINA")
#ingresar nombre por teclado
nombre=input("Ingrese el nombre del trabajador: ")
ban=True
#bucle mientras el valor sea True y continua si se elige mal la opción
while ban:
print("1. Contratista")
print("2. Planta")
#seleccione tipo
tipo=input("Ingrese tipo: ")
#comprobar si es número o caracter
if(tipo.isdigit() == True):
dato=int(tipo)
#comprobar si esta entre 1 y 2
if(dato > 0 and dato < 3):
ban=False
else:
#mensaje de error
print("No es opción")
ban=True
else:
#mensaje de error
print("Solo Números 1 o 2")
ban=True
#bucle mientras el valor sea True y continua si se ingresa mal el sueldo
ban=True
while ban:
#ingresa valor por teclado
valor=input("Ingrese el salario del trabajador: ")
#envío a función a comparar si es un número
comparar=esnumero(valor)
#comparar valor retornado
if(comparar == True):
#transforma a flotante o real
sueldo=float(valor)
if(sueldo > 0):
ban=False
else:
#mensaje de error
print("Ingrese positivos")
ban=True
else:
#mensaje de error
print("Ingrese solo números")
ban=True
#Opciones del menú
if(dato == 1):
#envío a función con parametros
res=contratista(nombre,sueldo)
#impresión del resultado
print("\nEl sueldo a pagar es
$ ",round(res,2))
else:
#envío a función con parametros
res=planta(nombre,sueldo)
#impresión del resultado
print("\nEl sueldo a pagar es
$ ",round(res,2))
#pregunta si desea continuar
opcion=input("¿Desea ingresar otro trabajador (S/N)?")
#comprueba si sale del bucle
if(opcion == 'N' or opcion == 'n'):
#rompre o salir del bucle principal
break
#imprimir mensaje final
print("Fin del programa")
os.system("pause")
Descargar