Autor Tema: Dibujar árbol navidad Python código bucle for while recursivo lógica algoritmia  (Leído 3587 veces)

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Unos códigos que ilustran como dibujar un árbol de Navidad usando Python de tres maneras diferentes. Es un ejercicio interesante para practicar con bucles para cualquier persona que esté aprendiendo programación, tanto con Python como con otros lenguajes.

Código con bucle for:

Código: [Seleccionar]
# Función para dibujar un árbol de navidad de una altura dada
def draw_tree(height):
  # Bucle for que crea cada fila del árbol
  for i in range(1, height + 1):
    # Imprimir los espacios antes de los asteriscos en cada fila
    for j in range(height - i):
      print(" ", end="")
    # Imprimir los asteriscos en cada fila
    for j in range(2 * i - 1):
      print("*", end="")
    # Pasar a la siguiente línea
    print()
# Llamar a la función para dibujar el árbol con una altura dada por ejemplo 5
draw_tree(5)

Código con bucle while:

Código: [Seleccionar]
# Función para dibujar un árbol de navidad de una altura dada
def draw_tree(height):
  # Establecer los valores iniciales para el bucle while
  i = 1
  j = 1
  # Iterar mientras el número de fila sea menor o igual a la altura del árbol
  while i <= height:
    # Imprimir los espacios antes de los asteriscos en cada fila
    while j <= height - i:
      print(" ", end="")
      j += 1
    # Resetear el valor de j
    j = 1
    # Imprimir los asteriscos en cada fila
    while j <= 2 * i - 1:
      print("*", end="")
      j += 1
    # Resetear el valor de j
    j = 1
    # Pasar a la siguiente línea
    print()
    # Incrementar el valor de i
    i += 1
# Llamar a la función para dibujar el árbol con una altura dada por ejemplo 15
draw_tree(15)

Y la que quizás sea la versión más compleja, basada en código recursivo:

Código: [Seleccionar]
# Función para dibujar un árbol de navidad de una altura y nivel dada
def draw_tree(height, level):
  # Comprobar si el nivel es igual a la altura del árbol
  if level == height:
    # Return si el nivel es igual a la altura
    return
  # Imprimir los espacios antes de los asteriscos en cada fila
  for j in range(height - level):
    print(" ", end="")
  # Imprimir los asteriscos en cada fila
  for j in range(2 * level - 1):
    print("*", end="")
  # Pasar a la siguiente línea
  print()
  # Llamar a la función recursivamente con el siguiente nivel
  draw_tree(height, level + 1)
# Llamar a la función para dibujar el árbol con una altura dada por ejemplo 5
draw_tree(5, 1)

Quien se anime puede crear el mismo código en otro lenguaje usando las mismas ideas ("lógica o algoritmia subyacente").



Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas, aparte de que el tipo de dibujo sea mejor o peor, este tipo de ejercicios resulta muy aconsejable para practicar lógica de la programación para todas aquellas personas que estén aprendiendo. Una cosa buena es que esto puede hacerse con prácticamente cualquier lenguaje, incluso pseudocódigo, así que animo a quienes estén aprendiendo a que intenten programarlo en cualquier lenguaje, solos, como forma de practicar.


 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".