Ejercicios en python (parte 5)
Ejercicio en python |
Hace unos días me dejaron un comentario en una de las entradas anteriores, planteando un ejercicio que me ha parecido interesante compartir con ustedes.
Para darle un poco de complejidad al ejercicio, la idea es hacerlo utilizando una base de datos (en este caso utilizaremos Sqlite3): puedes ver la entrada que hice sobre Sqlite3 (Python y Sqlite3 como base de datos) para que sirva como guía.
Ejercicio Python:
PyME, tiene la siguiente estructura de pagos para sus 10 empleados:
base
Una bonificación del 1% del sueldo base, por
cada mes trabajado
Una asignación familiar del 5% del sueldo base,
por cada hijo
La suma de los tres valores anteriores, conforman
la “base imponible”.
Todos los empleados están en FONASA, así que
deben cotizar el 7% de la base imponible en salud. Los empleados están en una de dos: AFPs, la
primera cobra (entre imposición y otros gastos) el 12 % de la base imponible, mientras que la
segunda cobra el 11.4%
Construyan un programa Python que:
a) Pida el ingreso de datos de los 10 empleados
y los almacene. Debe pedir: nombre, apellido, sueldo base, afap, fecha de ingreso
y cantidad de hijos.
b) El programa debe calcular la base imponible,
según lo indicado arriba y luego descontar según corresponda.
c) El programa debe calcular lo que se debe
pagar a FONASA y el monto de cada AFAP.
d) El programa debe calcular los promedios de
pago a los empleados
e) El programa debe implementar control de
excepciones en cada ingreso de información.
El mensaje debe ser claro al usuario, indicando
que debe corregir en cada intento de ingresar los datos.E
Se entiende por:
FONASA: El Fondo Nacional de Salud, FONASA, es el organismo público encargado de otorgar cobertura de atención, tanto a las personas que cotizan el 7% de sus ingresos mensuales en FONASA, como a aquellas que, por carecer de recursos propios, financia el Estado a través de un aporte fiscal directo.
AFAP: AFAP significa “Administradora de Fondos de Ahorro Previsional”. Son empresas que administran parte del aporte de los trabajadores afiliados para que en el futuro tengan una mejor jubilación.
Puedes ver también: Ejercicios de programación
Suerte.....
-
Dejo mi código para que lo mires (y)
# -*- coding: utf-8 -*-
def calculo(x,a):
from datetime import datetime, date, time
baseimponible = [None]*a
sueldoreal = [None]*a
sumsueldo = 0
Fonansa = 0
AFP1 = 0
AFP2 = 0
PromPago = 0
dif = 0
for j in range(a):
dia = int(x[j][4][0] + x[j][4][1])
mes = int(x[j][4][3] + x[j][4][4])
ano = int(x[j][4][6] + x[j][4][7] + x[j][4][8] + x[j][4][9])
fecha = datetime(ano,mes,dia,0,0,0)
ahora = datetime.now()
dif = ahora - fecha
factor = float(dif.days/365)*12 # Aprox 30 días por mes
baseimponible[j] = x[j][2] + 0.01*factor*x[j][2]+0.05*x[j][5]*x[j][2]
if x[j][3] == 1:
sueldoreal[j] = baseimponible[j] - 0.07*baseimponible[j] - 0.12*baseimponible[j]
sumsueldo = sumsueldo + sueldoreal[j]
AFP1 = 0.12*baseimponible[j]+AFP1
else:
sueldoreal[j] = baseimponible[j] - 0.07*baseimponible[j] - 0.114*baseimponible[j]
sumsueldo = sumsueldo + sueldoreal[j]
AFP2 = 0.114*baseimponible[j]+AFP2
Fonansa = 0.07*baseimponible[j]+Fonansa
PromPago = sumsueldo/a
print("Fonansa Total: ", + Fonansa)
print("AFP 1: ", + AFP1)
print("AFP 2: ", + AFP2)
print("Promedio de pagos", + PromPago)def main():
n = input("numero de empleados")
s = [None]*n
for i in range(n):
s[i] = [None]*6
for i in range(n): #Numero de empleados
s[i][0] = raw_input("Nombre: ")
s[i][1] = raw_input("Apellido: ")
while True:
try:
s[i][2] = input("Sueldo Base: ")
break
except:
print "Oops! No es valido el argumento, intente nuevamente"
while True:
try:
s[i][3] = input("AFP (1 (12%) o 2 (11.4%)): ")
break
except:
print "Oops! No es valido el argumento, intente nuevamente"
s[i][4] = raw_input("Fecha de ingreso (DD/MM/AAAA): ")
while True:
try:
s[i][5] = input("Numero de hijos: ")
break
except:
print "Oops! No es valido el argumento, intente nuevamente"
calculo(s,n)-
Ok, cuando tenga un tiempito lo miro. Gracias por visitar el blog. Saludos
-
-
hola estoy buscando un programa simple .. soy novato y necesito que me pases los codicos del sigte problema..
el ejercicio es elsigte..
hacer programa en python que calcule el total de una factura.
crea una variable llamada total_importe que contendra el total a pagar.
crea 2 constantes llamadas IVA_UNO y IVA-DOS QUE CONTENDRA el porceentaje del impuesto, 5 % y 10 % respectivamente.
si el monto a pagar es menor a 100000 debes usar 5% de iva, en caso contrario debes usar 10 %.
hay que realizar un descuento, en fucion de la suma de los importes, dicho descuento es del 0% si es menor que 1000, es del 5% si es mayor o igual que 10000 y menor que 50000 y es de 8% si es mayor que 100000. El descuento se debe aplicar antes de calcular el IVA.
para acabar se debe imprimir el importe total y el iva resultantes..por favor si me ayuda desde ya muchas gracias..!!
-
Disculpa por la tardanza.
aquí está tu código:"""factura básica"""
def borrar():
import os
name=os.name
if name=="nt":
os.system("cls")
else:
os.system("clear")
while True:
print("0-Para terminar; 1-para limpiar pantalla; cualquier numero para continuar")
monto=float(input("Iglese el monto:"))
IVA_UNO=5
IVA_DOS=10
total=0
if monto<1000 or monto<10000:
total_a_pagar=monto-total
total=monto
des="0%"
else:
if monto>=10000 and monto<50000:
total=monto*5/10
total_a_pagar=monto-total
des="5%"
else:
if monto>50000 and monto<100000:
total_a_pagar=monto-total
des="5%"
else:
if monto>=100000:
total=monto*8/100
total_a_pagar=monto-total
IVA_UNO=total_a_pagar*5/100
iva=IVA_UNO
des="8%"
if monto>=100000:
iva="5%"
IVA_UNO=total_a_pagar+monto
iva_a_usar=total_a_pagar
else:
iva="8%"
IVA_DOS=total_a_pagar*8/100
iva_a_usar=IVA_DOS+monto
print("___________________________________________")
print("El monto inicial es:.................",monto)
print()
print("Su descuento es de:................."+des)
print()
print("Su monto con descuento es:............",total)
print()
print("El IVA es del:........................",iva)
print()
print("===========================================")
print("Total a pagar: Sin IVA................",total_a_pagar)
print()
print("Total a pagar: con IVA:..............",iva_a_usar)
print("___________________________________________")
print()
if monto==0:
borrar()
print("Gracias por complar en python.ca")
break
if monto==1:
borrar()
-
-
buenas tardes me gustaria y me pudieran ayudar con este ejercicio
Desarrollar un programa que permita el ingreso de datos de n empleados tomando en cuenta lassiguientes consideraciones:
1. Los datos de un empleado deben estar formados por: Nombres, Apellidos, Cedula, Sueldo.
2. El programa deberá indicar el número de empleados a ingresar.
3. Luego, ingresar los datos de cada empleado hasta completar el número indicado.
4. Mostrar un menú con las siguientes opciones:
0. Salir
1. Promedio sueldo
2. Datos del empleado con mayor sueldo
3. Datos del empleado de menor sueldo
4. Buscar Empleado
El programa solo puede terminar cuando se escoja la opción 0
Características del desarrollo
● El programa debe ser desarrollado en python
● Se debe crear la clase Empleado
● En el desarrollo se deben implementar las siguientes funciones:
Dentro de la clase Empleado:
def leer()
#lee los datos necesarios del empleado, se debe validar mediante expresiones regulares que los
datos de nombre y apellido solo contengan letras, que la cédula posea 10 dígitos y finalmente
que el sueldo permitido sea mayor al sueldo básico en Ecuador
def imprimir()
#imprime todos los datos del empleado
También debe implementar las siguientes funciones:
def buscarEmpleadoPorCedula(ListaEmpleados, cedulaAbuscar)
#Recibe una lista de empleados y la cédula a buscar, el valor de retorno será el #objeto
empleado (en caso de encontrar un empleado con la cédula buscada)
Def obtenerEmpleadoMayorSueldo(ListaEmpleados)
#retorna el objeto empleado que tenga el mayor sueldo, recibe como parámetro una lista de
empleados.
Def obtenerEmpleadoMenorSueldo(ListaEmpleados)
#retorna el objeto empleado que tenga el menor sueldo, recibe como parámetro una lista de
empleados.
-
Este comentario ha sido eliminado por el autor.
-
-
hey si ya tienes la respuesta por favor ayudame
-
este el código que yo he creado
código:
#! user/bin/env python
# -*- encoding: utf-8 -*-from datetime import date
from sqlite3 import *def empleado(numero):
try:
print("Datos empleado No. {0}".format(numero))
nombre = input("Nombre: ")
apellido = input("Apelldo: ")
sueldoB = int(input("Sueldo base: "))
afap = int(input("AFAP (1, 2): "))
if afap < 0 or afap > 2: raise ValueError
fecha = input("Fecha de ingreso (dd/mm/aa): ")
if len(fecha) < 8: raise ValueError
hijos = int(input("cantidad de hijos: "))tupla = nombre, apellido, sueldoB, afap, fecha, hijos
return tupla
except ValueError:
print("Dato ingresado de manera erronea")
return empleado(numero)def mesesTrabajados(fecha):
now = date.today()
fechaNow = now.strftime('%d/%m/%y')
mes = int(fechaNow[3:5]) - int(fecha[3:5]) +1
if len(fecha[6:]) > 2:
anyo = int(fechaNow[6:]) - int(fecha[8:])
else: anyo = int(fechaNow[6:]) - int(fecha[6:])return mes + (anyo * 12)
cantEmp = 4 #cambiar el valor por 10 para que sea la cantidad de empleados proueta en el ejercicio
promedio = 0
empleados = []
baseImponible = []tablaEmpleado = '''CREATE TABLE empleados(
id INTEGER PRIMARY KEY,
nombre VARCHAR(80) NOT NULL,
apellido VARCHAR(80) NOT NULL,
sueldo base INTEGER NOT NULL,
afap INTEGER NOT NULL,
fecha ingreso VARCHAR(8) NOT NULL,
hijos INTEGER NOT NULL
);'''db = connect("data.db")
cursor = db.cursor()try:
cursor.execute(tablaEmpleado)
except OperationalError:
passcursor.execute("SELECT * FROM empleados;")
c = len(cursor.fetchall())
if c < cantEmp:
for i in range(cantEmp - c):
print("{:-^80}".format("pythondiario company"))
print("{:^80}".format("Registro de Empleados"))
empleados.append(empleado(c+1))
print("nn")for i in empleados:
cursor.execute("INSERT INTO empleados(nombre, apellido, sueldo, afap, fecha, hijos) VALUES(?,?,?,?,?,?);", i)
db.commit()cursor.execute("SELECT * FROM empleados;")
print("{:*^60}".format("Tabla de Empleados"))
print("_"*60)
print("|{:^18}|{:^10}|{:^8}|{:^10}|{:^8}|".format("Nombre y Apellido", "Sueldo", "AFAP", "Fecha", "Hijos"))
for i in cursor:
print("|{:^18}|{:^10}|{:^8}|{:^10}|{:^8}|".format("{0}{1}".format(i[1], i[2]), i[3], i[4], i[5], i[6]))
bonificacion = (1 * i[3] / 100) * mesesTrabajados(i[5])
familiar = (5 * i[3] / 100) * i[6]
base = i[3] + bonificacion + familiar
baseImponible.append(base)
promedio += i[3]# bonificacion -> (1*sueldo/100)*mes
# familiar -> (5*sueldo/100)*hijos
# baseImponible -> sueldo + bonificacion + familiarprint("-"*60)
print("nDatos de los empleados: ")
print("_"*76)
print("|{:^10}|{:^15}|{:^15}|{:^15}|{:^15}|".format("Empleado", "Base Imponible", "FONASA", "AFAP", "TOTAL"))cursor.execute("SELECT * FROM empleados;")
for i, x in zip(baseImponible, cursor):
fonasa = (7*i/100)
afap = 0
if x[4] == 1:
afap = (12*i/100)
else: afap = (11.4*i/100)
print("|{:^10}|{:^15.2f}|{:^15.2f}|{:^15.2f}|{:^15.2f}|".format(x[1], i, fonasa, afap, i-(fonasa+afap)))
print("-"*76)print("Promedio: {:.2f}".format(promedio/cantEmp))
cursor.close()
db.close()-
me puedes ayudar hacer un trabajo.
-
-
Buenos dias de verdad necesito ayuda debo crear un programa basado en un juego de domino con una corrida de 7 soy novata y no se bien como hacerlo podria alguien ayudarme :c
-
necesito realizar un programa en python que le permita a una empresa calcular su nómina de manera básica.
El programa debe:
Preguntar al usuario el precio por hora trabajada.
Preguntar al usuario cuantos empleados va a procesar.
Preguntar de cada empleado cuantas horas ha trabajado, si tiene seguro medico y cuantos años tiene en la empresa.
Para cada empleado se debe calcular su sueldo bruto que es igual a las horas que ha trabajado multiplicado por el precio por hora trabajada.
Para cada empleado se le debe calcular el descuento por seguro médico. Si el empleado tiene seguro medico se le descuenta un 3% de su sueldo bruto.
Para cada empleado se le debe calcular el bono por años en servicio. Si el empleado tiene mas de 5 años en la empresa se le da un bono de un 5% de su sueldo bruto.
Para cada empleado se le debe calcular su sueldo neto. El sueldo neto es igual a la cantidad de horas que ha trabajado multiplicado por el precio de las horas trabajadas, menos el descuento por seguro medico (Si este tiene) mas el bono por años en servicio (Si a este le toca).
Realizar los cálculos de los pagos de todos los empleados y sumarlos, para al final imprimir un reporte como el siguiente ejemplo:
===========================================Cantidad de empleados procesados: 12
Total horas trabajadas por todos los empleados: 480
Precio por Hora trabajada: 60
Sumatoria bruta de sueldos a pagar: 28,800
Sumatoria descuentos por seguro médico: 5,380
Sumatoria bonos por años en servicios: 3,000
Sumatoria neta de sueldos a pagar: 26,420
==========================================
Deja una respuesta
Hola, creo que el literal B de las pregunta esta mal especificada. no se debe descontar según corresponda, debe aumentar porque son las bonificaciones