Consulta de un ejercicio

buen día.
consulta. podrían ayudarme con un ejercicio.
Realizar una función que reciba 2 parámetros, a y b, si a es mayor que b, realizar la suma de los números enteros de a hasta b incluidos, si no se realiza la suma, retornar a.

si me ayudan se los agradezco mucho.
saludos.

Hola, creo que la idea del ejercicio es que aprendas, ysi te lo damos resuelto estaríamos evitando eso. Para crear la funcion podes seguir los ejemplos de que uno de dichos ejemplos tiene 2 parametros. después podes usar un if para comparar si b es mayor que a, y para sumar los números podes usar las funciones sum y range. Saludos, Javier.

yo lo hice, pero no obtengo el resultado
def suma_num_naturales (a,b):
if a >b:
acum = 0
for i in range(b , a+1):
acum += i
return acum
else:
return a

cuando pruebo el código, no obtengo la suma de los números naturales

Hola, a mi me funciona, que error estás teniendo? >>> def suma_num_naturales (a,b): … if a > b: … acum = 0 … for i in range(b , a+1): … acum += i … return acum … else: … return a … >>> suma_num_naturales(9, 7) 24 >>> 9 + 8 + 7 24

Creo que el tema está resuelto, pero me gustaría aportar algo que a todos les sirve, sobre todo cuando tienen que ‘traducir’ un problema desde un campo (la matemática, en este caso) a lo programático, y mucho más si estás aprendiendo a programar.

Es algo muy sencillo, usar strings multilinea para definir el problema:

"Esto es un string"

"""Esto
es
un
string
multilinea"""

Para el problema de Carlos sería:

"""
# Definición del problema
Realizar una función que reciba 2 parámetros, a y b,
si a es mayor que b, realizar la suma de los números
enteros de a hasta b incluidos,
si no se realiza la suma, retornar a.

# Constantes
None

# Variables
a, b

# Condiciones
a > b: devolver suma inclusiva de los números enteros de 'a' hasta 'b'
a <= b: devolver 'a'
"""

Una vez que definiste bien el problema y sus diferentes partes, recién ahí empezás a escribir código fuente. A veces el problema mismo está mal definido o poco claro, aprovecha para ponerlo en palabras que vos entiendas.

Si no sabés como resolverlo en Python, investigás. Si tenés dudas de cómo funciona o qué te devuelven las diferentes funciones nativas de Python, usá el intérprete para practicar.

Mi estilo particular, puede no ser el tuyo, es evitar en lo posible los términos abstractos como ‘a’ y ‘b’. Está perfecto para aprender matemática, ya que se trata de abstraer objetos concretos de la vida real para encontrar una solución general, pero en la vida real, un programador trata de encontrar una solución para un problema concreto, a menos que estés haciendo el doctorado en matemática. Usá para la definición cosas concretas como Megahertz, bulones o pelotas, dependiendo de el problema que tengas en frente.

Modificando un poco la definición quedaría algo como esto:

"""
# Definición del problema
Realizar una función que reciba 2 parámetros,
si el primero es mayor que el segundo,
realizar la suma de los números enteros desde el mayor
hasta el menor incluidos estos dos,
en caso contrario, devolver el primer parámetro.

# Variables
a=0, b=0, suma=0

# Condiciones
a > b: for i in range(b, a+1): suma += 1
a <= b: return a
"""

Fijate que:

  • Mejoré la definición para mayor claridad
  • Agregué variables adicionales que necesito
  • Definí el mínimo código fuente que necesito para resolver la ecuación
  • Todo lo anterior, tratando de usar en lo posible código Python válido. Un borrador más y el compilador no debería marcarte error.

En el caso específico de las funciones, es importante el valor por defecto que devuelve. Si vos definís una función vacía:

def sumar_naturales(a,b):
    pass

Te devuelve None. Muy útil si usas la salida de la función en un condicional, ya que funciona como un booleano. Podés checkearlo en el intérprete.

Otro tip útil es dar valores por defecto a los parámetros en lo posible:

def sumar_naturales(a=0,b=0):
    return a

Fijate que:

  • Para los nombres de las funciones, usá verbos, porque es un proceso, no un objeto
  • En la definición no parece obvio, pero el valor de ‘a’ es el valor por defecto que devuelve la función

Sabiendo lo anterior, ya podés empezar a escribir directamente la función, descomentándo las lineas que usas de la definicion:

#! /usr/env python
"""
Realizar una función que reciba 2 parámetros,
si el primero es mayor que el segundo,
realizar la suma de los números enteros desde el mayor
hasta el menor incluidos estos dos,
en caso contrario, devolver el primer parámetro.
"""
def sumar_naturales(a=0,b=0):
    suma=0

    if a > b:
        for i in range(b, a+1):
            suma += 1
        return suma

    return a

print(sumar_naturales(9,7))

Fijate que:

  • Devolviendo por defecto ‘a’, te ahorrás el ‘else’ en el condicional
  • Por supuesto, tenés que usar un script para esto. La primer linea (Shebang) depende de tu plataforma