Reto/Juego Ejercicios en Python

Iniciado por Novlucker, 2 Septiembre 2010, 15:48 PM

0 Miembros y 1 Visitante están viendo este tema.

n1co

#30
Bueno es la primera vez que posteo, y me da verguenza publicar esto, no porque sea la primera vez, sino porque es una chanchada.. jaja perdon, son mis inicios en estos juegitos, y lo hice apuradamente para que aparezca otro. Espero a que respondan si esta bien o si esta como el ort..'

Saludoss..


Código (Python) [Seleccionar]

'''
Created on 29/11/2010

@author: nicolas
'''
import threading
import socket
from datetime import datetime

class Resultado():
    def __init__(self, puerto, tiempo):
        self.puerto = puerto
        self.tiempo = tiempo
   
    @staticmethod
    def ObtenerTiempoResultado(resultado):
        return resultado.tiempo

class Escucha(threading.Thread):   
    def __init__(self, puerto, lista):
        threading.Thread.__init__(self)
        self.puerto = puerto
        self.lista = lista
       
    def run(self):       
        socket_ = socket.socket()
        socket_.bind(('localhost', self.puerto))
        socket_.listen(1)
        socket_.accept()       
        socket_.close()
        self.lista.append(Resultado(self.puerto, datetime.today()))

resultados = []     
resultados_esperados = [64000, 32000, 16000, 8000, 4000]   
puerto1 = Escucha(64000, resultados)
puerto2 = Escucha(32000, resultados)
puerto3 = Escucha(16000, resultados)
puerto4 = Escucha(8000, resultados)
puerto5 = Escucha(4000, resultados)
puerto1.start()
puerto2.start()
puerto3.start()
puerto4.start()
puerto5.start()

while len(resultados) != 5:
    pass

correcto = True
cont = 0
for resultado in sorted(resultados, key=Resultado.ObtenerTiempoResultado):
    if resultado.puerto != resultados_esperados[cont]:
        correcto = False
        break
    cont += 1

if correcto:
    print '=>Secuencia Correcta: %s' % (datetime.today().strftime("%H:%M:%S %d/%m/%y"))

Novlucker

Esta muy bien :P

Cosas que yo haría ...
Código (python) [Seleccionar]
for i in resultados_esperados:
    p = Escucha(i,resultados)
    p.start()

... de este modo no queda tan feo :xD

Y luego lo principal del script iría dentro de un bucle, ya que de este modo cuando realizas los 5 intentos de manera incorrecta se cierra, debería de ir algo como "Secuencia incorrecta".

De cualquier manera creo que se podría dar por bueno, ahora te toca a ti ponernos un ejercicio ya que en eso consiste este post, alguien pone reto, otro soluciona, el que lo soluciona pone nuevo reto, etc etc :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

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

n1co

Muchas gracias por los comentarios, tienes toda la razon con ese codigo que añades...
Sobre el ejercicio dejame unos minutos para pensarme algo y ya posteo algo :D

n1co

Buenas, posteo mi ejercicio:

Hay que hacer un programita  que extraiga información de una web y la guarde en un archivo txt(Ofertas.txt).
Datos importantes:

web: http://www.computrabajo.com.ar/

Hay que extraer todas las ofertas del día de hoy del sector "Ingeniería/Técnico"

el txt deberá tener el siguiente formato:


Puesto vacante: ***
Localidad: ***
Provincia: ***
Salario: ***
Empresa: ***

##########

Puesto vacante: ***
Localidad: ***
Provincia: ***
Salario: ***
Empresa: ***

##########

y así sucesivamente
Obviamente los *** son cambiados por los datos, en caso de que algún data no esté, dejamos vacío(ej: Salario: ).

Otro detalle, me gustaria que no utilicen modulos que no vienen por defecto con python, o sea no conozco mucho pero se que hay un "Beautiful Soup" que facilita algo porque valida y formatea el html para hacerlo xml y poder utilizar xpath.

Creo que xon urllib, o urllib2 y un par de expresiones regulares ya tienen todo. :D


Saludos.

[L]ord [R]NA

Detenganse!!!... el reto anterior no esta realizado correctamente, lo puerto n1co los abre y deben estar cerrados.

Novlucker

:huh: No termino de entender lo que dices, si el script hace exactamente lo que pides :-\

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

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

n1co

jajaja si a ver si explicas un poco mejor, y por lo menos ahora empiezan a aparecer :D y yo que pensaba que esto estaba muerto :)

Dnk!

No muerto no, aqui uno se une a los retos, pero ya me espero al siguiente que tengo tarea que hacer  :rolleyes:




Comentar es agradecer.
Visita Mi Blob

[L]ord [R]NA

Cito: Realizar un script que haga la funcion de demonio para un portknocker.

El Script debe mantenerse recogiendo los paquetes que lleguen pero los puertos deben estar cerrados... de caso contrario no funcionaria como portknocker.

Novlucker

Que pesado, y dale con los raw_sockets, que conste que aún no he visto ningún código de los ejercicios que planteas, así que no sabemos ni si tu puedes hacerlo :rolleyes:

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

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