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")