¡Te damos la bienvenida a este reto!

1

Empezando con Python desde 0

Día 1

2

Variables, funciones y sintaxis básica

3

Tipos de datos: Numbers, Strings y Diccionarios

4

Playground - Retorna el tipo

Día 2

5

Operadores

6

Playground - Calcula la propina

Día 3

7

Condicionales

8

Playground - Averigua si un año es bisiesto

9

Ciclos

10

Playground - Dibuja un triangulo usando bucles

Día 4

11

Listas

12

Encuentra a los gatitos más famosos

13

Diccionarios

14

Obtén el promedio de los estudiantes

15

Tuplas

16

Obten la información de los paquetes

Día 5

17

Calcula la cantidad de letras en una oración

18

Encuentra el mayor palíndromo

Día 6

19

Sets

20

Encuentre la intersección de conjuntos

Día 7

21

List comprehension

22

Encuentra palabras con dos vocales

23

Dictionary Comprehension

24

Calcula la longitud de las palabras

Día 8

25

Funciones Lambda

26

Filtra mensajes de un user específico

27

Higher order functions

28

Crea tu propio método map

Día 9

29

Manejo de Errores y excepciones

30

Maneja correctamente los errores

31

Maneja las excepciones

Día 10

32

Playground - Crea un task manager usando closures

Día 11

33

Lectura de archivos de texto y CSV

Día 12

34

Programación orientada a objetos

35

Crea un auto usando clases

Día 13

36

Abstracción en Python

37

Playground - Crea un sistema de carrito de compras

38

Encapsulamiento en Python

39

Playground - Encapsula datos de los usuarios

Día 14

40

Herencia en Python

41

Playground - Jerarquía de animales usando herencia

Día 15

42

Polimorfismo en Python

43

Playground - Implementa un sistema de pagos

Día 16

44

Estructuras de datos en Python

45

Playground - Crea tu propia lista en python

46

Hash tables en Python

47

Playground - Implementación de una HashTable para Contactos

Día 17

48

Maps en Python

49

Playground - Crea un task manager con Maps

Día 18

50

Singly Linked List en Python

51

Playground - Implementación de una singly linked list

Día 19

52

Stacks en Python

53

Playground - Implementación de un stack

Día 20

54

Queues en Python

55

Playground - Implementación de una queue

Día 21

56

¡Lo lograste!

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

13 Días
18 Hrs
30 Min
2 Seg

Playground - Dibuja un triangulo usando bucles

10/56

Aportes 77

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?


*
*
*
*
*

def print_triangle(size, character):
    triangle = ''
    for i in range(size):
        triangle += " " * (size - i - 1)
        triangle += character  + character * (2 * i)
        if i != size - 1:
            triangle += "\n"
    return triangle


Soy fiel creyente de que en programacion hay muchas formas de llegar a la solucion y es por eso que me parece contraproducente limitar la imaginacion y encasillarnos en una solucion en particular.
Dejo dos soluciones ambas dan el mismo resultado pero solo la segunda es aceptada por el playground.

def print_triangle(size, char):
    for s in range(size):
        print(' '*(size-s-1) + char*(2*s+1))


def print_triangle(size, char):
    tri = ''
    for s in range(size):
        tri += ' ' * (size-s-1)
        tri += char * (2*s+1)
        if s < size:
            tri += '\n'
    return tri

Como en otros casos similares, en VScode si funcionó
en playground no considera los caracteres de espacio y por limitantes de recursos(tiempo) no le dedico un poco más.
De hecho tuve que adelantarme con algunos métodos pero aún así no quedo tan bién.

Igual y si eventualmente mostraran como una introducción al sistema playground para entender como funciona, sería interesante por fines didácticos.

Escribi la solucion y el test daba error. Lo ejecute local y veia bien pero seguia dando error. Al final termine viendo la solucion porque no entendia el motivo y localmente compare el resultado de mi funcion con la que sugeria el playground y me daba que estaban OK. Despues de revisar ambos encontre que, mas alla de diferencias logicas como algun nombre de variable, en range utilizado y la forma de completar los espacios, la variable que yo devolvia se llamaba triangulo y la de la funcion resuelta era triangle. Cambie el nombre de mi variable y paso los test correctamente. Considero que es un error grave ya que el recordatorio especifica eliminar el el ultimo “\n” y retornar todo en una variable sin definir su nombre y no creo que un test deba depender del nombre de la variable ademas del resultado.

MI SOLUCION SIN DUDA FUE LA MAS CORTA CASI NI TIENE CARACTERETES


:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:

#HUMOR

DESPUES DE MUCHAS HORAS SIN ENTENDER EL ERROR INTENTE CON LA SOLUCION QUE ELLOS DAN Y TAMBIEN SALE ERROR ARREGLEN POR FAVOR

https://static.platzi.com/media/user_upload/Escudo_anti_spoiler-4a27dbc9-e3b4-44f5-995e-b7f8a7666e59-507f4c1f-1ac3-4ce4-ba99-b7382a1c1ae0.jpg
Raro me funciona en local pero no en aqui

def print_triangle(size, character):
    for i in range(size):
        print(" " * (size - i -1) + character * (2*i+1)) 

print_triangle(5,"*")

Yo no lo le voy a colocar escudo porque la consola del reto no lo acepta pero en Colab sí :

def print_triangle(size, character):
    # Tu código aquí 👈
    for i in range(1,size):
      print(" "*(size-i-1) + character*(2*i-1))

print_triangle(6,"*")

Parece que no acepta la consola imprimir espacios juntos y que no utilices el salto de línea \n.

Nada que ver la forma en que viene en la solución del reto jajaja, pero me fuincionó, “Todos los caminos llegan a Roma”


.
.
.
.
.
.
.

# 09 - Dibuja un triangulo usando bucles

def print_triangle(size, character):
  #size = 5 # Número de líneas a imprimir
  #character = "$" # Caracter a imprimir
  #i = 0 # contador 

  # Imprime los espacios en blanco
  for i in range (size):
    print(" " * (size -i -1), end="")
    #           (5 - 0 -1 = 4)
    #           (5 - 1 -1 = 3)

  # Imprime los simboles que forman el pinito
    print(character * (2 * i + 1))
    #                 (2 * 0 + 1) = 1
    #                 (2 * 1 + 1) = 3

print_triangle(5,"$")

# EN EL FOR NO SE PONE "i += 1"

Esta solución la realice en otros editores, y fue correcta la respuesta … en fin será el siguiente reto

def print_triangle(size, character):
  salida=""
  for x in range (size):
    salida+=" "*(size-x)
    salida+= character+(character*2*x)
    print (salida + "\n")
    salida=""
    
  pass
  
print_triangle(10,"$")  
 

🛡️🛡️Escudo anti-spoilers🛡️🛡️

Mi solucion:

def print_triangle(size, character):
  space = size -1
  symbol = 1 
  string = '' 
  for line in range(1, size + 1):
    if symbol == 1:
      string = (" " * space) + (f"{character}" * symbol) + "\n"
    else:
      string = string + (" " * space) + (f"{character}" * (symbol))
      if line < size:
        string = string+ "\n"
    space = space - 1
    symbol = symbol + 2
  return string

Leyendo comentarios de los compañeros vi que hay muchos inconvenientes, igualmente es mi caso, con el mismo código implementado en el playground lo intente en VS code y allí me funciono sin problema, me gustaría si me podrían apoyar a saber a que se debe el inconveniente, gracias.

![](https://static.platzi.com/media/user_upload/%7B3F07AC1B-A3FD-43FF-91BE-4BC338EF44A8%7D-5a7efbd3-1cb6-4ec7-9333-84107c8e3edd.jpg) ![](https://static.platzi.com/media/user_upload/%7BB375E6E5-E0F0-4A98-9D17-FBB618F61042%7D-f263b643-bbc4-44e7-b50c-71f82208f7fd.jpg)![](https://static.platzi.com/media/user_upload/%7BB375E6E5-E0F0-4A98-9D17-FBB618F61042%7D-eabfb735-d3cd-4a71-9a7e-d6af81c09151.jpg)
Me tomó un buen rato, pero por fin conseguí resolverlo a mi manera. Estoy muy enfadado de que no halla pasado la prueba solo por no utilizar el "\n". ![](https://static.platzi.com/media/user_upload/image-12db4fb3-f5ca-4856-9f51-eadda9abda50.jpg) ![](https://static.platzi.com/media/user_upload/image-fe0c09b8-8bde-45fe-a5e6-31c61f15db10.jpg) ![](https://static.platzi.com/media/user_upload/image-2a013aac-ad73-461f-84e3-7835a451f830.jpg)
```python def print_triangle(size, character): for i in range(size): print((size * " ") + (character * (i*2+1))) size -= 1 print_triangle(10, "*") ```En code funciona perfecto, pero acá en la página no.
...les presento mi solución ![](https://static.platzi.com/media/user_upload/1-b317062b-45f3-45f3-b052-2ceee7c37102.jpg)
```js def print_triangle(size, character): # Tu código aquí 👈 space = 1 triangle = 1 for i in range(size): print(" " * (size - space), character*triangle) space += 1 triangle+=2 pass print_triangle(3, "*") print_triangle(6, "$") ```def print\_triangle(size, character):    # Tu código aquí 👈    space = 1     triangle = 1    for i in range(size):        print(" " \* (size - space), character\*triangle)        space += 1        triangle+=2    pass print\_triangle(3, "\*")print\_triangle(6, "$")
```js def print_triangle(size, character): # Tu código aquí 👈 resultado="" if size > 0: linea=1 espacios=size caracteres=1 cadena=character while (linea <= size): str_espacios="" for espacios in range(1, size-linea+1): str_espacios = str_espacios + ' ' resultado=resultado+(str_espacios + cadena) if(linea!=size): resultado=resultado+'\n' linea =linea +1 caracteres=caracteres+2 cadena=cadena+character+character return resultado print(print_triangle(5,'H')) ```
![](https://static.platzi.com/media/user_upload/imagen-10226b4e-ea00-4630-ae6e-9eb925f645cf.jpg)
def print\_triangle(size, character): \# Tu código aquí 👈 triangle="" space =" " for i in range (1,(size+1)): triangle = triangle + ((size -i) \* space) + character \* (2\*i-1) + "\n" print (triangle) pass print\_triangle(7, "\*")

Hola a todos, realicé el playground, lo ejecuté y no funcionó porque no coloca los espacios al principio.
Sólo me funciona en el idle de python. He notado que hay ciertas cosas que no funcionan bien en el playground, no sé si es por mi falta de experiencia en Python o porque realmente hay bugs en la interfaz. En fin…
Esta es mi solución al problema:

def print_triangle(size, character):
    maxCar = size*2-1
    cadena = ""

    # Se itera en cada fila del triangulo:
    for i in range(1, size+1):
        nCol = i*2 - 1
        nEsp = maxCar - nCol
        nEsp_div2 = int(nEsp/2)
        cadena = cadena + nEsp_div2*" " + nCol*character + nEsp_div2*" " + "\n"
    cadena = cadena.rstrip() #Elimina el último salto de línea.
    print(cadena)
    #return cadena

print_triangle(3, "*")
print_triangle(6, "$")
```js def print_triangle(size, character): triangulo = '' if size % 2 == 0: espacios = (size // 2) - 1 else: espacios = size // 2 for i in range(size): fila = i + 1 triangulo = triangulo + (" " * espacios) espacios = espacios - fila triangulo = triangulo + (character * fila) if fila != size: triangulo = triangulo + '\n' return print(triangulo) print_triangle(10, '#') ```
```js def print_triangle(size, character): triangulo = '' if size % 2 == 0: espacios = (size // 2) - 1 else: espacios = size // 2 for i in range(size): fila = i + 1 triangulo = triangulo + (" " * espacios) espacios = espacios - fila triangulo = triangulo + (character * fila) if fila != size: triangulo = triangulo + '\n' return print(triangulo) print_triangle(10, '#') ```*def* print\_triangle(*size*, *character*): triangulo = '' if size % 2 == 0: espacios = (size // 2) - 1 else: espacios = size // 2 for i in range(size): fila = i + 1 triangulo = triangulo + (" " \* espacios) espacios = espacios - fila triangulo = triangulo + (character \* fila) if fila != size: triangulo = triangulo + '\n' return print(triangulo) print\_triangle(10, '#')
`def print_triangle(size, character): triangulo = ''` ` if size % 2 == 0: espacios = (size // 2) - 1 else: espacios = size // 2 for i in range(size): fila = i + 1 triangulo = triangulo + (" " * espacios) espacios = espacios - fila triangulo = triangulo + (character * fila) if fila != size: triangulo = triangulo + '\n' return print(triangulo)`
hola lo hice, pero por VSC, porque con el pyground no me sale: ![](https://static.platzi.com/media/user_upload/image-bb86e347-e1b3-4e1b-a0fa-be0b0fb7a1e2.jpg)
def print\_triangle(size, character):    # Tu código aquí 👈    triangle = ""    for i in range(1,size+1):        spaces = (size - i) \* " "        row = ((2 \* i) -1) \* character        triangle += spaces + row + "\n"    triangle = triangle.rstrip("\n")    return (triangle)

Comparto mi solución:
def print_triangle(size, character):
triangle = [f"{’ ’ * (size - i)}{character * (2 * i - 1)}" for i in range(1, size + 1)]
return “\n”.join(triangle)

Comparto mi solución.

def print_triangle(size, character):
    triangle = ''
    space = ''
    c = character
    for i in range(size):
        for j in range(size -1):
            space += ' '
        triangle += space + c + '\n'
        c += character + character
        size -= 1
        space = ''
    return (triangle)
finished_triangle = print_triangle(6, '*')
print(finished_triangle)
     *
    ***
   *****
  *******
 *********
***********

Comparto mi solución sólo utilizando lo visto en clases.


def print_triangle(size, character) -> str:
  # Tu código aquí 👈
  triangulo = ""
  new_size = size - size + 1
  space = size - 1
  rows = 1
  while rows <= size:
    triangulo += (space * " ") + (character * new_size)
    new_size += 2
    space -= 1
    rows += 1
    if rows <= size:
      triangulo += "\n"
  return triangulo

Yo lo hice asi: y me lanza error al ejecutar la prueba, pero no se porque, si alguien sabe y me lo hace saber se lo agradeceria:
def print_triangle(size, character):
# Tu código aquí 👈
triangle = ""
triangle += " " * (size) + character + "\n"
return triangle

size = 7
for i in range(1, size):
if i % 2 != 0:
triangle = print_triangle(int((size - i) / 2) , “*” * i )
print(triangle)

Les comparto mi código.
En mi caso el for lo hice de manera descendente:

![](

No sé porque no pasa si en visual funciona perfecto
A veces pasa eso con los playground

def print_triangle(size, character):
    # ciclo de 0 a x sin contar x
    response = ""
    i = 0
    quantity_char = 1
    gap = size - quantity_char

    while i < size:
        quantity_char = (2*i) + 1
        response += f"{gap*' '}{character*quantity_char}\n"

        gap -= 1
        i += 1

    return print(response)

print_triangle(6,"*")
def print_triangle(size, character):
    # Tu código aquí 👈
    s = 1 # representa los renglones de la figura
    triangle = ""
    num = size - 1
    cont = 1
    while cont <=size:
        espacio = " " * num# espacios que centran la figura
        char =s * character 

        triangle += espacio + char +"\n"
        cont += 1
        s += 2  # la figura  por cada renglon aumenta en 2 =  numero primos 1,3,5,7
        num -= 1 # decrecen en uno en uno, del número mayor (size) al número cero
    return triangle

result = print_triangle(3, "*")
print(result)
def print_triangle(size, character):
    # Tu código aquí 👈
    s = 1
    por = size - 1
 
    for i in range(size):
      espacio = " " * por
      print ((espacio),(s)* character,"\n")
      s = s + 2  # la figura  por cada renglon aumenta en 2 =  numero primos 1,3,5,7
      por -= 1 # espacios que centran la figura

¡LAS PARTE DEL TEST ESTÁN MAL!
Parece no estar considerando los espacios a la izquierda. Incluso con el código de solución, marca un error. 😂 Antes de publicar estos ejercicios deberían de revisar que la parte de las pruebas funcione correctamente. De todas formas, les comparto mi solución:

def print_triangle(size, character):
    # Tu código aquí 👈
    triangle = ''
    for i in range(1, size + 1):
        triangle = triangle + ((size - i)*' ')
        triangle = triangle + ((i * 2 - 1)*character)
        #triangle = triangle + ((size - i)*' ')

        if i != size:
            triangle = triangle + '\n'

    return triangle
    pass

figure = print_triangle(3, '*')
print(figure)

Comenté la parte que agrega espacios a la derecha porque puede ser innecesaria. Pero, aun así, dejé la línea de código.

Falle, es que no le se bien a las mates 😥😥


.
.
.
.
.
.
.
.
.
.

Mi solución:

def print_triangle(size, character):
  triangle = ""
  for row in range(size):
    triangle += " " * (size - row - 1) + character * (2 * row + 1) + '\n'     
  triangle = triangle[:-1]
  return triangle

Creo que hay algún problema con la consola 🫠

def printTriangle(size, character):
    triangle = ""
    for i in range(1, size + 1):
        spaces = " " * (size - i)
        chars = character * (2 * i - 1)
        triangle += spaces + chars + "\n"
    return triangle

# Ejemplos
print(printTriangle(3, "*"))
print(printTriangle(6, "$"))

Yo lo hice de esta manera, pero me marcaba error

Este es el resultado:

Listo!

item = 1
Tamano = int(input(“Ingrese el tamaño del triángulo:”))
Caracter = input(“Elige el caracter:”)
def Graficar(Tamano,Caracter):
i = 1
for item in range(1,Tamano + 1):
Triangulo = “" * (Tamano - item) + (Caracter*i) + "” * (Tamano - item)
item += 1
i += 2
print(Triangulo)
Graficar(Tamano,Caracter)

yo lo hice sin usar el salto de linea y por eso no me acepta el ejercicio 😥

def print_triangle(size, character):
    triangle = ''
    for i in range(size):
        triangle += ' ' * (size - i - 1) + character * (2 * i + 1) + '\n'
    return triangle[:-1]
    pass

Solución aquí:

def print_triangle(size, character):
    triangle = ""
    for i in range(1, size + 1):
        triangle += " " * (size - i) + character * (2 * i - 1) + "\n"
    return triangle[:-1]

#prueba de código

print(print_triangle(2, "*"))

print("\n\n")

print(print_triangle(3, "*"))

print("\n\n")

print(print_triangle(6, "$"))

print("\n\n")

print(print_triangle(4, "%"))

Lo mas corta que pude

def print_triangle(size, character):
    triangle = ""
    for i in range(1, size + 1):
        triangle += " " * (size - i) + character * i + character * (i - 1) + "\n" * (not size == i)
    return triangle

def print_triangle(size, character):
# Tu código aquí 👈

for i in range(size):
    for j in range(size - i - 1):
        print(" ", end="")

    for j in range(2 * i +1):
        print(character, end="")
    print("")

print_triangle(6, “*”)

Solución 😄…
.
Deben agregar espacios al principio, y no a ambos lados. En la consola de aquí es un poco difícil de notar, les aconsejo probar en un cuaderno de Google Colab que ya viene con python.
.
Por ejemplo, esto es el incorrecto:

.
Esta es la solución al problema:

Nota: Los espacios de la derecha son el carácter “\n” que representan un salto de lineal. Se ven como si fuera un espacio " " pero no lo son. Cuentan como carácter. Por eso no hay en la última fila.

.

.
.
.
.

def print_triangle(size, character):
    res = ""

    for i in range (1, size + 1):
        res += " " * (size - i) + character * (2 * i - 1) + "\n"
    
    return res[:-1]

Mi solucion funciono sin embargo o se por que al hacer el test, se suprimen los espacios antes de los caracteres, sin embargo me funciono en la consola de python, dejo a continuacion:

def print_triangle(size, character):
    triangulo=""
    repetitions = 1
    while size > 0:
        
        spaces = size -1
        triangulo += " " * spaces
        triangulo += character * repetitions
        triangulo += " " * spaces

        size-=1
        repetitions+=2
        if size == 0:
            break
        else:
           triangulo+= "\n"
    
    return triangulo

Solución mía al problema:

def print_triangle(size, character) -> str:
    # Tu código aquí 👈
    triangle: str = ""
    for i in range(size):
        triangle += " "*(size-i-1) + character*(2*i+1) + "\n"
    return triangle

Y, en caso que queramos voltear el triangulo, el código seria:

def print_upside_down_triangle(size, character) -> str:
    triangle: str = ""
    for i in range(size-1, -1, -1):
        triangle += " "*(size-i-1) + character*(2*i+1) + "\n"
    return triangle

yo lo hice con un ciclo while pero por alguna razon no funciona
pero cuando lo pruebo en codesandbox si me funciona bien

def print_triangle(size, character):    
    triangle = ""
    i = 0
    while i < size:
        triangle += " " * (size - i - 1)
        triangle += character * (2 * i + 1)
        if i != size:
            triangle += "\n"
        i += 1
    return triangle

Me costó dos horas, creo que centrarlo fue lo mas dificil para mi, sin embargo me arroja error cuando lo ingreso pero me da el mismo resultado jajaja. creo que es algo loco pero lo importante es el resultado

def print_triangle(size, character):
    file = 1
    spaces = size -1
    triangle =(' ' * (spaces)) + character
    for i in range(2,size + 1):
        spaces += -1
        files = str(character * (i + file))
        triangle += ('\n' + (' ' * spaces) + files)
        file =file + 1

    return print(triangle)
    
print_triangle(10, '$')
def print_triangle(size, character):
    """
    Title: Draw a equilateral triangle
    Description: Function to draw a equilaterar triangle from a variable.
    Paramether: int: size, str: character
    Return: str: Variable
    """
    triangle = ""
    for row in range(1, size + 1):
        spaces = " " * (size - row)
        lines = character * (2 * row - 1)

        if row != size:
            triangle += spaces + lines + "\n"
        else:
            triangle += spaces + lines
    return triangle



if __name__ == '__main__':
    print(print_triangle(5, "*"))

Por fin lo logre!!!
*
*
*
*
*
*
*
*
*
*
*
*
*

def print_triangle(size, character):
# Tu código aquí 👈
triangulo = ""
for i in range(size):
triangulo += " " * (size - i - 1)
triangulo += character * (2 * i + 1)
if i < size - 1:
triangulo += "\n"
return(triangulo)
pass


.
.
.
.
.
.
.
.
.

Considero que mi solución fue bastante rebuscada al compararla con el código de los demás, espero mejorar pronto. Mientras tanto, acepto cualquier recomendación que me puedan dar.

def print_triangle(size, character):
    first = ""
    last = character * ((size * 2) - 1)
    i = 1
    while i < size:
        first += last.replace(character, "", size - i)[::-1].replace(character, " ", size - i) + "\n"
        i += 1
    return first + last 


Mi solución, este codigo no funciona en el playground pero si lo prueban en algún editor de Python online sale exactamente igual al supuesto output que nos piden.

def print_triangle(size, character):
    # Tu código aquí 👈
    triangle = ""
    #counter = 1
    for i in range (size):        
        spaces = " "
        spaces*=size-i
        right_side=character*i        
        right_side+=spaces
	#Ponemos en reversa el lado derecho
        left_side= right_side[::-1]
        raw=left_side+character+right_side+"\n"
        triangle+=raw
        
    return print(triangle)
def print_triangle(size, character):
    triangle = ''
    n = 1
    k = size - 1
    for i in range(size):
        triangle += " " * k + character * n + '\n'
        k -=1
        n +=2
    return triangle[:-1]


.
:
:
:


.
.
.
.
.
.
.
.
El código con el que por fin pasaron mis pruebas… no se si tenga que ver pero antes de retornar la figura la convertí en string con el método str()
.

def print_triangle(size, character):
    # Tu código aquí 👈
    triangle = ""
    round = 1
    num_character = 1
    blank_space = " "
    total_character = size * 2 - 1

    while round < size:

        space = blank_space * int((total_character - num_character) / 2)
        set_character = character * num_character
        
        triangle += space + set_character + '\n'

        round += 1
        num_character += 2

    triangle += character * total_character
    triangle = str(triangle)
    return triangle
    pass


Mi solución es esta

def print_triangle(size, character):
    for i in range(1, size + 1):
        spaces = " " * (size - i)
        line = f"{spaces}{character * (2 * i - 1)}"
        print(line)

Mi resultado a ver si sirve de algo, también deben reiniciar la pagina, porque cuando te marca un error, al parecer todas las demás veces son error
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

def print_triangle(size, character):
    # Tu código aquí 👈
    triangle = ''
    for i in range(size):
      triangle += ' ' * (size - i -1) + character * (2 * i + 1)
      if i != size - 1:
        triangle += '\n'
    return triangle

No logré pasar este desafío. Sin embargo, luego de ver la solución de Platzi, me doy cuenta que en teoría desarrollé la misma lógica solo que no supe como expresarla en código, eso es bueno, ya que voy progresando y sobre todo viendo que mi lógica no está mal (que de hecho creo que es lo más importante), lo demás es seguir aprendiendo como funciona el lenguaje para poder plasmar de manera correcta esa lógica


.
.
.

def print_triangle(size, character):
    triangulo =[]
    for i in range(size):
        triangulo.append(str(" "*(size-i-1))+str(((2*i)+1)*character))
    return(str('\n'.join(triangulo)))
def print_triangle(size, character):
    # Tu código aquí 👈
   triangulo = []
   for i in range(1, size + 1):
      espacios = ' ' * ((size - i) // 2) # repetimos los espacios, el tamaño(size) - la iteracion(i) 
      caracteres = character * i # repetimos el caracter el numero de veces de la iteracion(i)
      figura = f'{espacios} {caracteres} {espacios}'
      triangulo.append(figura)

   return '\n'.join(triangulo)

print(print_triangle(3, "*"))    

Aunque en el VS code me funciono segun mi lógica,

def print_triangle(size, character):
    contador=0
    while True:
        espacio=size-contador-1
        contador+=1
        repetir=2*contador-1
        print(" "*espacio, end="")
        print(character*repetir)
        if contador >= size:
            break

print_triangle(3,"*")

def print_triangle(size, character):
    triangle = ''
    for i in range(1, size+1):
      row = character*(i*2-1)
      triangle += row.rjust(i+size-1)
      if i != size:
          triangle += '\n'
    return triangle


.
.
.
.
.
.
.
.

Las instrucciones indican dibuja, por lo que yo lo interpreté como que debo realizar los prints dentro del método. Al ver la sección de pruebas me pude percatar que lo que esperaba es que la función devolviera el string concatenado. Considero que la confusión puede evitarse colocando mejores instrucciones.

Comparto el código utilizando type hints y list comprehension:

def print_triangle(size: int, character: chr) -> str:
    return '\n'.join(f"{' ' * (size - row - 1)}{character * (2 * row + 1)}" for row in range(size))

De nuevo, mi código esta bien por que lo probe en el interprete de python desde mi pc. Sin embargo, al hacer el test, no lo aprueba.

def print_triangle(size, character):
    base_size = 1 + 2 * (size - 1)
    triangle = ""

    for i in range(1, size + 1):
        n = 1 + 2 * (i - 1)
        space = " " * int((base_size - n) / 2)
        end_line = "\n" if i < size else ""

        triangle += space + character * n + space + end_line

    return triangle

mi codigo es:

def print_triangle(size, character):
    triangulo = ""
    for i in range(size):
        linea = " " * (size -1 - i)
        linea += character * (i*2 + 1)
        triangulo += linea 
        if i < (size -1):
            triangulo += "\n"
    return triangulo


print(print_triangle(3, "*"))
print(print_triangle(6, "$"))

Esta fue mi manera de solucionarlo y me sirvio local:

def print_triangle(size, character):
    for i in range(1, size + 1):
        print(f'{character * (2 * i - 1)}'.center(size * 2))


# print_triangle(3, "*")
print_triangle(6, "$")

def print_triangle(size, character):
espacio = ""
total = ((size * 2) - 1)
mitad = (total // 2)+1
linea = ""
alto = size+1
ancho = total+1

for a in range(1, alto):
    asteric = character * ((a * 2) - 1)
    for b in range(1, ancho):
        if b == mitad:
            c = espacio * (mitad - a)
            linea += c + asteric + c +'\n'
        

print(linea)

print_triangle(3, “*”)
print_triangle(6, “$”)

sé que no es la mejor solución, pero igual llegue y no pase las pruebas, me podrían ayudar con alguna retroalimentación e indicarme en que falle para no pasar las pruebas, gracias de antemano

def print_triangle(size, character):
  # Tu código aquí 👈
  triangulo = ""
  for i in range(1,size+1):
    triangulo += " " * (size-i)
    triangulo += character * ((2*i)-1)
    if i < size:
      triangulo += "\n"
  return triangulo
  pass

print(print_triangle(3, "*"))
print(print_triangle(6, "$"))


.
.
.
un poco mas largo que la solución oficial, pero después de varias horas me llenó de orgullo 🐍👌🏼
.
.
.
.

def print_triangle(size, character):
  dibuja = ''
#contadores
  contEspacios = size
  contCaracteres = 2
  contRenglones = 1
#dibujar renglón
  while contRenglones <= size:
    for i in range (1,contEspacios):
      dibuja = dibuja + ' '   
    for i in range (1,contCaracteres):
      dibuja = dibuja + character
#inserta cambio de renglón excepto en la ultima línea
    if contRenglones < size:
      dibuja = dibuja + "\n"
#ajuste contadores para siguiente renglon
    contEspacios-=1
    contCaracteres+=2
    contRenglones+=1
  return(dibuja)
pass


.
.
.
.
.
.
.
.
.
.
.
.

Este es mi código

<f print_triangle(size, character):
    # Tu código aquí 👈
  for i in range (size):
    print (("*"*(i+1)))
    


print_triangle(3, "*")> 



.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

def print_triangle(size, character):
    accum_str = ''
    for row in range(size):
        blank_space = ' ' * (size - row - 1)
        character_size = character * (2 * row + 1)
        accum_str += f"{blank_space}{character_size}\n"
    return accum_str[:-1] 


.
.
.
.
.

def print_triangle(size, character):
    # Tu código aquí 👈
    line = ''
    for i in range(1,size):
        line += f'{" " * (size - i)}{character * (2 * i - 1)}\n'
    line += f'{(character * (2 * size - 1))}'
    return line
undefined