elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14
31  Programación / Scripting / Re: Duda Estenografia en python3 en: 15 Julio 2017, 19:08 pm
La función xrange ya no está en Python 3. No se si estará en algún modulo aparte. Creo que por ahí te puede venir el error. Prueba tu script en Python 2.xx por si las moscas. Saludos!
32  Programación / Scripting / Re: ¿Se puede simplificar el código del Checkbutton en tkinter? [PYTHON] en: 10 Julio 2017, 19:03 pm
Muchas gracias por el script  :D

Me imaginaba, que no era lógico, poner tantos IFs y líneas repetitivas. Vi unos ejemplos donde su autor explicaba, de alguna manera, el Checkbutton. Claro esta que en su ejemplo eran solo tres Checkbutton. Pero claro, si uno debe poner cien (por ejemplo), tarde o temprano se las tiene que ingeniar con un algoritmo como el tuyo. Le echado un vistazo por encima y creo que debe estar bien. Eso sin contar que luego recomiendan usar la OOP para usar tkinter.

Para familiarizarme con tkinter estaba creando un simple escrutador de loteria primitiva. Aquí una captura:



Al final, el tema de la ubicación de los Checkbutton lo he solucionado en el siguiente script. Seguramente tu método será mejor. Pero a mi me gusta (aunque sean mas lineas) que el código no quede tan compacto.  Lo digo en referencia del método place().

Código
  1. # Creacion de los Checkbutton
  2. varsCheck =[]
  3. coord_x, coord_y = 10, 60 # Coordenadas iniciales
  4. for i in range(0, 49):
  5.    varsCheck.append(IntVar())      
  6.    Checkbutton(ventana, text = str(i + 1), variable = varsCheck[i], onvalue = 1, offvalue = 0).place(x = coord_x, y = coord_y)    
  7.    coord_y += 30  
  8.    if coord_y > 300:
  9.        coord_y = 30
  10.        coord_x += 50
33  Programación / Scripting / ¿Se puede simplificar el código del Checkbutton en tkinter? [SOLUCIONADO] :) en: 9 Julio 2017, 18:21 pm
Hola de nuevo!  :D

Llevo un tiempo haciendo programas de Python en consola. Ahora me he decidido por usar una GUI. Y me he decantado por tkinter. He ido conociendo un poco los widgets y con el Checkbutton me han asaltado unas dudas:

En casi todos los ejemplos se crean unos pocos Checkbutton. Para cada uno de ellos se debe crear la variable de su estado y una función (normalmante llamada por command del widget Button). Pero claro, si queremos crear, por ejemplo, diez o veinte Checkbutton la cosa se desmadra y se crea un código redundante y repetitivo.

Ejemplo:

Código
  1. def imprime():
  2.    global lista
  3.    lista = []
  4.    if _1.get() == 1:
  5.        lista.append(1)
  6.    if _2.get() == 1:
  7.        lista.append(2)
  8.    if _3.get() == 1:
  9.        lista.append(3)
  10.    if _4.get() == 1:
  11.        lista.append(4)
  12.    if _5.get() == 1:
  13.        lista.append(5)
  14.    if _6.get() == 1:
  15.        lista.append(6)
  16.    if _7.get() == 1:
  17.        lista.append(7)
  18.    if _8.get() == 1:
  19.        lista.append(8)
  20.    if _9.get() == 1:
  21.        lista.append(9)
  22.    if _10.get() == 1:
  23.        lista.append(10)
  24. _1 = IntVar()
  25. _2 = IntVar()
  26. _3 = IntVar()
  27. _4 = IntVar()
  28. _5 = IntVar()
  29. _6 = IntVar()
  30. _7 = IntVar()
  31. _8 = IntVar()
  32. _9 = IntVar()
  33. _10 = IntVar()
  34. chk1 = Checkbutton(ventana, text = '1', variable = _1, onvalue = 1, offvalue = 0).place(x = 10, y = 30)
  35. chk2 = Checkbutton(ventana, text = '2', variable = _2, onvalue = 1, offvalue = 0).place(x = 10, y = 60)
  36. chk3 = Checkbutton(ventana, text = '3', variable = _3, onvalue = 1, offvalue = 0).place(x = 10, y = 90)
  37. chk4 = Checkbutton(ventana, text = '4', variable = _4, onvalue = 1, offvalue = 0).place(x = 10, y = 120)
  38. chk5 = Checkbutton(ventana, text = '5', variable = _5, onvalue = 1, offvalue = 0).place(x = 10, y = 150)
  39. chk6 = Checkbutton(ventana, text = '6', variable = _6, onvalue = 1, offvalue = 0).place(x = 10, y = 180)
  40. chk7 = Checkbutton(ventana, text = '7', variable = _7, onvalue = 1, offvalue = 0).place(x = 10, y = 210)
  41. chk8 = Checkbutton(ventana, text = '8', variable = _8, onvalue = 1, offvalue = 0).place(x = 10, y = 240)
  42. chk9 = Checkbutton(ventana, text = '9', variable = _9, onvalue = 1, offvalue = 0).place(x = 10, y = 270)
  43. chk10 = Checkbutton(ventana, text = '10', variable = _10, onvalue = 1, offvalue = 0).place(x = 60, y = 30)


Esto es un extracto del código. El que hace referencia a la duda que me surge. Es decir, se puede dar el caso que un programa tenga 100 casillas a seleccionar ¿Cómo se puede evitar este código tan repetitivo?

Saludos!
34  Programación / Scripting / Re: [Python] No va tkinter en mac en: 15 Junio 2017, 19:34 pm
En python 3 tkinter se escribe en minuscula todo.

Código
  1. import tkinter

Y en python 2
Código
  1. import Tkinter
35  Programación / Scripting / Re: Simular la salida de un ciclo FOR con pygame [PYTHON] en: 12 Junio 2017, 19:20 pm
Pues muchas gracias por todas las explicaciones. La verdad es que escogí Pygame para practicar un poco la POO. Aunque claro, también se puede practicar este paradigma con la consola o un editor.

Supongo que para iniciarse con una GUI recomendarías tkinter ¿No? Mas que nada por el ejemplo con el que abrí el post. 

De todas formas estudiare el código que has posteado. Que seguro me servirá para seguir aprendiendo. Un saludo!
36  Programación / Scripting / Simular la salida de un ciclo FOR con pygame [PYTHON] en: 5 Junio 2017, 13:50 pm
Hola de nuevo!

Quizás recomendaríais otro tipo de modulo para este tipo de impresiones. Bueno, me refiero a mostrar gráficas y salida de datos. Pygame se suele utilizar para el tema de videojuegos y multimedia. Algo tan simple como mostrar la salida de un ciclo FOR (u otras salidas de datos) no  me llegaba a aclarar. En todo caso, me gustaría saber vuestra opinión, si es la forma correcta de hacer esta implementación.

Creo un ciclo para mostrar 40 números. Pero como llega un momento que la ventana definida en pygame se queda pequeña, hemos de crear otra columna para que se muestre el resto de números. Lo ideal seria que se creasen tantas columnas como números del ciclo. Claro esta que llegaría un momento que también se llegaría al limite de esa misma ventana ¿Se debería crear una nueva ventana y perderíamos la anterior? ¿Pygame no tiene la barra de desplazamiento como las ventanas de windows?

Os dejo el código que he creado:
(Es un esquema básico o plantilla para mostrar el ejemplo)

Código
  1. import pygame
  2. import sys
  3. pygame.init()
  4.  
  5. pantalla = pygame.display.set_mode((800, 600))
  6. fuente = pygame.font.SysFont('Comic Sans MS', 20, True, False)
  7.  
  8. while True:
  9.  
  10.    for evento in pygame.event.get():
  11.        if evento.type == pygame.QUIT:
  12.            pygame.quit()
  13.            sys.exit()            
  14.  
  15.    pantalla.fill((255, 255, 255))
  16.  
  17.    # Coordenadas iniciales impresion de columnas
  18.    y = 0
  19.    x = 0
  20.    for numero in range(1, 41):        
  21.        imprime_numero = fuente.render(str(numero), True, (0, 0, 0))
  22.        pantalla.blit(imprime_numero, (x, y))
  23.        y += 20
  24.        # Si la coordenada 'y' llega a 400 se crea una nueva columna
  25.        if y == 400:
  26.            x = 40
  27.            y = 0                  
  28.  
  29.    pygame.display.flip()


Si lo ejecutáis se crea una columna del 1 al 20 y otra del 21 al 40.
¿Es la forma correcta de imprimir un ciclo FOR en pygame?

Saludos!

EDITO:

Con esta modificación en la linea 26 se crean mas columnas en base a mas números en el ciclo:
Código
  1. x += 40
37  Programación / Scripting / ¿Si es falso por que se entra en el bucle while? [PYTHON] en: 10 Febrero 2017, 18:54 pm
Hola de nuevo...

Estudiando el tema de los nodos y sus recorridos me surgio una duda con el bucle while. Para entrar en un bucle while la condicion debe ser verdadera. Hasta ahi nada nuevo. Osea, solo que pongamos:

Código
  1. while 1:
  2.    pass

Entramos en el bucle. Y esto es por que 1 es True.

Código
  1. 1 == True
  2. True

Pero...

Código
  1. 2 == True
  2. False
  3.  

No devuelve False ¿Entonces como es que se entra en el bucle while?

Código
  1. x = 0
  2. while 2:
  3.    print('hola')
  4.    x += 1
  5.    if x == 5:
  6.        break
  7.  

Con este codigo se ejecuta el bucle. Seguro que la duda es muy tonta y alguna explicacion tiene que se me ha pasado por alto.

El codigo del nodo es el tipico:


Código
  1. class Nodo:
  2.    def __init__(self, carga = None, prox = None):
  3.        self.carga = carga
  4.        self.prox = prox
  5.  
  6.    def __str__(self):
  7.        return str(self.carga)
  8.  
  9.  
  10. n4 = Nodo(4)
  11. n3 = Nodo(3, n4)
  12. n2 = Nodo(2, n3)
  13. n1 = Nodo(1, n2)
  14.  
  15.  
  16.  
  17. def recorrer(nodo):
  18.    print(nodo)
  19.    while nodo:
  20.        print(nodo)
  21.        nodo = nodo.prox
  22.  
  23. # Aqui podemos ver como n2 vale 2 y si es false ¿Por que se entra en while?    
  24. recorrer(n2)
  25.  
38  Foros Generales / Dudas Generales / Re: ¿Utilizáis a menudo la recursividad al programar? en: 5 Febrero 2017, 13:21 pm
no creo que estés claro en estos temas

es parte es como decir "es dificil distinguir cuando irme en carro o meterme a bañar"

la recursividad no siempre es buena practica... si no está bien calculada y el ciclo es muy profundo, el stack se desbordará y el programa no sabrá como volver... esto es un "el programa se detuvo inesperadamente"

Bueno, igual me he expresado bien. No me referia a mezclar o comparar conceptos. Es decir, POO y recursividad. Sino, que a veces, no es necesario utilizar la POO. Como otras veces tampoco es necesario utilizar la recursividad. Porque suele pasar que cuando se cambia de paradigma solo vemos soluciones utilizando ese paradigma. E igual no es correcto.
39  Foros Generales / Dudas Generales / Re: Se puede estudiar varias cosas a la vez? en: 4 Febrero 2017, 14:28 pm
Hombre, también depende del tiempo que tenga cada uno. Si se dedica solamente a estudiar y se tiene mucho tiempo libre se puede abarcar mucho. Pero si cada dia se dispone de una hora o dos, es mejor profundizar sobre el tema que le interesa. A veces, hay mucha gente, que se infla la boca diciendo que domina venticinco lenguajes de programación. Es como el que sabe 30 idiomas o no sale de su casa. Llenarse la cabeza de cosas que no va utilizar lo veo un contrasentido.

Ahora bien, si uno domina bien un lenguaje y quiere aprender algun otro, no lo veo mal. Pero aprender 100 y ninguno de ellos bien, si lo encuentro funesto.

Lo suyo es centrarse profundamente en un lenguaje (donde uno se sienta agusto) y mas adelante probar nuevas aventuras.
40  Foros Generales / Dudas Generales / ¿Utilizáis a menudo la recursividad al programar? en: 4 Febrero 2017, 14:19 pm
Ya sé que esta pregunta abre un debate que igual no lleva a ningún lado. Pero veo que hay muchos partidarios de la recursividad y otros que no tanto. Es como cuando se aplica la POO en todos los códigos, cuando igual, no hace falta. Pero claro, a veces es difícil distinguir cuando usar la POO o la recursividad. Leo a programadores (calificados de expertos) que argumentan que todo lo que se puede hacer con recursividad se puede aplicar con iteración. Y en caso de duda ¿Por dónde decantarse?

Donde veo que utilizan mucho el tema de la recursividad es con la IA o el tema de árboles y grafos.  Ósea, con estructuras de datos no lineales. La cuestión, es, si con iteración se podrían conseguir los mismos resultados o sería más complicado.

Quizás soy la única persona en la tierra que lee más fácil la iteración que la recursividad. Porque se suele argumentar que el código recursivo es más legible y elegante (aquí me refiero a Python) . No sé, a mí siempre se me ha hecho más enrevesado. Pero claro, eso ya es algo subjetivo.

Supongo, que a fuerza de programar, esas dudas se disipan. Y casi instintivamente sabe uno cuando aplicar la recursividad y cuando no.

Pues eso…¿Utilizáis mucho la recursividad? A mi es uno de los conceptos que más pereza me ha dado siempre por estudiar. O quizás, desde mi ignorancia, lo he dajado en segundo plano.
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines