es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué las salidas de estas dos funciones equivalentes son diferentes?

Intenté resolver este problema usando dos enfoques diferentes. El primero calcula la renta de abajo hacia arriba, mientras que el segundo lo hace de arriba hacia abajo. Desafortunadamente, no puedo identificar qué está causando que devuelvan diferentes resultados en lugar del mismo.

Aquí está la pregunta: A partir del ingreso mensual del inquilino, el propietario se queda con un 5% de los primeros $0 a $9999 + un 10% de los $10k restantes a $19999 + un 15% de los $20k restantes a $49999 + un 20% de los $50k restantes a $99999 + un 30% de los $100000 restantes y más.
Descubre cuánto alquiler tendrá que pagar el inquilino este mes si su ingreso mensual fue de $23,000.

def calculate_rent_1(salario_inquilino):
renta = 0
if salario_inquilino > 0:
if salario_inquilino <= 9999:
return 0.05 * salario_inquilino
else:
renta += 0.05 * 9999
salario_inquilino -= 9999

if salario_inquilino > 9999:
    if salario_inquilino <= 19999:
        return renta + 0.1 * salario_inquilino
    else:
        renta += 0.1 * 9999
        salario_inquilino -= 9999

if salario_inquilino > 19999:
    if salario_inquilino <= 49999:
        return renta + 0.15 * salario_inquilino
    else:
        renta += 0.15 * 29999
        salario_inquilino -= 29999

if salario_inquilino > 49999:
    if salario_inquilino <= 99999:
        return renta + 0.2 * salario_inquilino
    else:
        renta += 0.2 * 49999
        salario_inquilino -= 49999

if salario_inquilino > 99999:
    return renta + 0.3 * salario_inquilino

def calculate_rent_2(salario_inquilino):
if not salario_inquilino: return 0
renta = 0
if 100000 <= salario_inquilino:
renta += 0.3 * (salario_inquilino – 100000)
salario_inquilino = 99999
if 50000 <= salario_inquilino:
renta += 0.2 * (salario_inquilino – 50000)
salario_inquilino = 49999
if 20000 <= salario_inquilino:
renta += 0.15 * (salario_inquilino – 20000)
salario_inquilino = 19999
if 10000 <= salario_inquilino:
renta += 0.1 * (salario_inquilino – 10000)
salario_inquilino = 9999
if 0 < salario_inquilino:
renta += 0.05 * salario_inquilino

return renta

print(“Resultado de calculate_rent_1:”, calculate_rent_1(23000)) # resultado: 1800.0500000000002
print(“Resultado de calculate_rent_2:”, calculate_rent_2(23000)) # resultado: 1949.8500000000001

Tags:  , , ,

Answer

Comments are closed.