Python - Duda dibujar una cruz en pantalla sin turtle

 
Vista:

Duda dibujar una cruz en pantalla sin turtle

Publicado por maria (12 intervenciones) el 28/10/2017 18:26:24
Hola, necesito ayuda con el siguiente ejercicico de Python. Lo tengo que hacer solo usando diccionarios y bucles. Sin usar turtle.


Definir una función aspa(a,c) que recibiendo un número natural a (impar y
# mayor que 2) y una cadena de caracteres c (de longitud 1), dibuja por
# pantalla una cruz en forma de aspa construida con el carácter dado c, con
# una altura de a líneas. Definir la función de manera que el primer argumento
# se pueda dar con la clave "caracter" y el segundo argumento sea "o" por
# defecto.

# Ejemplos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# >>> aspa(7)
# o     o
#  o   o
#   o o
#    o
#   o o
#  o   o
# o     o
# >>> aspa(21,caracter="x")
# x                   x
#  x                 x
#   x               x
#    x             x
#     x           x
#      x         x
#       x       x
#        x     x
#         x   x
#          x x
#           x
#          x x
#         x   x
#        x     x
#       x       x
#      x         x
#     x           x
#    x             x
#   x               x
#  x                 x
# x                   x
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.148
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda dibujar una cruz en pantalla sin turtle

Publicado por kip (257 intervenciones) el 29/10/2017 22:25:21
Hola, a ver si esto te sirve:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def aspa(lng, char='o'):
    if (not lng % 2
            or lng < 3
            or len(char) > 1):
        return ''
    center = char.center(lng)
    padd = lng
    aspas = []
    for n in range(lng//2):
        aspas.append('{0}{1}{0}'.format(char, ' ' * (padd - 2)).center(lng))
        padd -= 2
    return '{}\n{}\n{}'.format(
        '\n'.join(aspas),
        center,
        '\n'.join(aspas[::-1])
    )


1
print(aspa(9, 'x'))
Te mostrara:
1
2
3
4
5
6
7
8
9
x       x
 x     x
  x   x
   x x
    x
   x x
  x   x
 x     x
x       x

1
print(aspa(7))

1
2
3
4
5
6
7
o     o
 o   o
  o o
   o
  o o
 o   o
o     o
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar