elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 10:13  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Mini Reto Python. Dibujar rombo ~
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mini Reto Python. Dibujar rombo ~  (Leído 3,142 veces)
Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Mini Reto Python. Dibujar rombo ~
« en: 1 Diciembre 2010, 23:34 »

Se debe realizar una funcion en python el cual dibuje un rombo de asteriscos "*". Se le debe pasar por parametro el numero de lineas.

Debiera quedar mas o menos asi:


Espero se animen. xDnk!


En línea




Comentar es agradecer.
Visita Mi Blob
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #1 en: 1 Diciembre 2010, 23:41 »

Esos son 9 niveles? Alcanza hacerlo con asteriscos o hay que utilizar alguna librería gráfica?

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #2 en: 1 Diciembre 2010, 23:43 »

Si, son nueve niveles, pero recuerda el numero de lineas se pasa por parametro, asi que no importa, mientras graficamente ser parezca a la imagen. Unicamente con el uso de asteriscos.

Saludos.
En línea




Comentar es agradecer.
Visita Mi Blob
n1co

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #3 en: 2 Diciembre 2010, 00:46 »

Buenas muchachos, he hecho el reto! :D publico a ver que tul,
Código
'''
Created on 01/12/2010
 
@author: nicolas
'
''
 
import sys
 
def es_par(numero):
   return (numero % 2 == 0)
 
def dibujar_rombo(lineas):
   lineas = int(lineas)
   if es_par(lineas):
       print 'El numero de lineas es par, no puedo escribir un rombo perfecto'
   else:
       espacios = int(lineas / 2)        
       disminuyo = False
       cantidad = 1
       str = ''
       for i in xrange(lineas):
           for n in xrange(espacios):
               str += ' '                
           for n in xrange(cantidad):
               str += '*'
           print str
           if len(str) == lineas:
               disminuyo = True
           if disminuyo:
               cantidad -= 2
               espacios += 1
           else:
               cantidad += 2
               espacios -= 1
           str = ''
 
if __name__ == '__main__':
   dibujar_rombo(sys.argv[1])
   #dibujar_rombo(9)        

Saludos..
En línea
Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #4 en: 2 Diciembre 2010, 01:03 »

Ya no queria ser yo el primero, y visto que n1co ya posteo el suyo, ahora me toca a mi.

Código
 
def imprimirRombo(n):
   n = n//2
   for i in range(n,0,-1):
       for j in range(n,(n-(i+1)),-1):
           print '',
       for k in range(i+1,n+1):
           print '*',
       print
   for i in range(0,n):
       for j in range(n,(n-(i+1)),-1):
           print '',
       for k in range(i+1,n+1):
           print '*',
       print
 
imprimirRombo(10)
 
 

Mientras me miro tu code n1co.
xDnk!
En línea




Comentar es agradecer.
Visita Mi Blob
n1co

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #5 en: 2 Diciembre 2010, 01:08 »

mmm nuestros scripts hacen cosas difetenes, puesto que tu pusiste el ejercicio yo tal vez no comprendi del todo. Te daras cuenta que el numero que recibo por parametro es el numero de lineas del rombo, cosa que en el tuyo no se cumple segun lo que acabo de probar, y otra cosa es que para los numeros pares no escribo el rombo ya que no seria perfecto, pero al ver tu script veo que se podia hacer de otra forma y quedaba bien :D
En línea
Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #6 en: 2 Diciembre 2010, 01:15 »

Si, es verdad, si le paso por ejemplo 10, se traga una linea, que la muestra en blanco.

En línea




Comentar es agradecer.
Visita Mi Blob
n1co

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #7 en: 2 Diciembre 2010, 01:19 »

y si le pasas un impar te lo hace en dos lineas menos pero bueno es otra forma de hacerlo, si te das cuenta en mi ejemplo el numero por parametro coincide tambien con el lado mas largo del rombo
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #8 en: 2 Diciembre 2010, 02:14 »

Yo tengo esto :P
Código
def imprime(n):
   if not n%2:
       print 'El numero de lineas es par, no puedo escribir un rombo perfecto'
   else:
       l = [[' ' for x in range(n)] for z in range(n/2+1)]
       for e in range(n):
           for i in range(e,n-e):
               l[e][i] = '*'
       l = l[:0:-1]+l
       for i in l:
           print ' '.join(i)
 
imprime(11)

Saludos
« Última modificación: 2 Diciembre 2010, 02:45 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

n1co

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #9 en: 2 Diciembre 2010, 02:16 »

Yo tengo esto :P
Código
def imprime(n):
   if not n%2:
       print 'El numero de lineas es par, no puedo escribir un rombo perfecto'
   else:
       l = [[' ' for x in range(n)] for z in range(n/2+1)]
       for e in range(n):
           for i in range(e,n-e):
               l[e][i] = '*'
       l = l[:0:-1]+l
       for i in l:
           print ''.join(i)
 
imprime(11)

Saludos

jajajaj hay una parte de ahi que me parece conocida...  :P
muy bueno, ya me voy a dormir mañana lo pruebo :D
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #10 en: 2 Diciembre 2010, 02:18 »

Si, te copié la frase completa, no iba a estar pensando otra :xD
Citar
muy bueno, ya me voy a dormir mañana lo pruebo :D
Y yo tengo que irme a programar otra cosa :¬¬

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #11 en: 2 Diciembre 2010, 10:55 »

Yo directamente, me fui a dormir, sin avisar, que mal educado por mi parte. xD.
A lo largo del dia, mirare mi algoritmo, para que te pinte si o si, las lineas exactas.

Tambien decir, que yo vengo de lenguajes menos dinamicos cono c++, java, c# y siempre me han enseñado a que si no hay que usar listas (arreglos), no se utilizan.

Aqui es donde quiero que me abrais un poco la mente sobre python, es decir, que es mejor que es peor...etc.

Saludos.
En línea




Comentar es agradecer.
Visita Mi Blob
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #12 en: 2 Diciembre 2010, 11:15 »

Para lo que pide realmente no es necesario utilizar listas, pero por mi parte lo había preferido para no repetir código, además de que me resultaba más legible. Y otro motivo es que en principio había hecho la función para que retornara la lista y luego desde fuera se imprimiera su contenido, pero finalmente he metido todo dentro de la función. Esto anterior era porque no me gusta tener una función con prints dentro porque pierde reusabilidad, pero esta claro que algunas funciones solo se crean para imprimir algo :xD

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: Mini Reto Python. Dibujar rombo ~
« Respuesta #13 en: 2 Diciembre 2010, 11:31 »

Comprendido. A todo esto veo que nadie mas va a participar en este MiniReto. Aun asi aqui esta el tema y bien recibido seran las demas propuestas.

Ahora toca esperar a un proximo reto  :P.

xDnk!
En línea




Comentar es agradecer.
Visita Mi Blob
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
mini-reto hacking piloto
Desafíos - Wargames
inforob 10 2,635 Último mensaje 4 Febrero 2009, 23:14
por f0n
[Python]3 en raya y mini proyecto.
Scripting
braulio-- 0 1,219 Último mensaje 11 Abril 2009, 20:47
por braulio--
[Python] Ayuda con mini troyano
Scripting
.:Swik:. 3 2,079 Último mensaje 7 Junio 2010, 22:09
por Debci
Reto/Juego Ejercicios en Python « 1 2 3 4 »
Ejercicios
Novlucker 47 9,119 Último mensaje 20 Diciembre 2010, 06:47
por [L]ord [R]NA
Reto: Números primos en python
Ejercicios
Novlucker 6 2,853 Último mensaje 24 Noviembre 2010, 16:02
por Novlucker
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines