Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: Masita en 21 Diciembre 2009, 03:04 am



Título: Juego ejercicios [Python]
Publicado por: Masita en 21 Diciembre 2009, 03:04 am
He pensado que podria ser interesante hacer un juego sobre python, como los tipicos que se hacen en foros adivinando peliculas que ya todos conocereis. El juego consistiria en plantear un ejercicio y el resto tendriamos que desarrollar el algoritmo y postearlo. Quien antes mande su algoritmo, propondria un nuevo ejercicio.

Deberiamos respetar una curva de aprendizaje donde cada vez los ejercicios fuesen mas complicados o tratasen aspectos diferentes, pero sin saltos excesivamente marcados en su dificultad. Y los ejercicios podrian ser tanto de creacion de algoritmos, depurar un algoritmo ya creado pero que tenga algun fallo o mejorar uno haciendolo mas simple y legible. Cualquier cosa que nos haga pensar y darle vueltas al coco jeje

Creo que puede ser bueno para los que empiezan, con esto de la programacion, motivandonos y compartiendo nuestro aprendizaje.  :P

Asi que aqui dejo el primer ejercicio:

-Crear un lanzador de tiradas de dados, donde el usuario introduzca el numero de caras y el numero de dados.
-Mostrar los resultados ordenados de mayor a menor.

PD: Espero que os guste la idea y el post siga adelante.


PD2: Creo que este es el subforo al que corresponde este post, si el moderador lo cree conveniente que lo mueva al subforo de scripts.

Un saludo y a pythonear!  ;D


Título: Re: Juego ejercicios [Python]
Publicado por: Blitzkrieg' en 21 Diciembre 2009, 03:22 am
Solo python o tambien se pueden otros lenguajes?


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 21 Diciembre 2009, 03:26 am
En principio yo habia pensado hacerlo para python, mas que nada es en lo que me muevo y pienso q sera menos caotico que un ejercicio de cada si lo que se busca es aprender. Siempre se pueden abrir diferentes post para diferentes lenguajes. Y si la idea no marcha pues se cierran..... dios no lo quiera jaja


Título: Re: Juego ejercicios [Python]
Publicado por: Amerikano|Cls en 22 Diciembre 2009, 03:28 am
No todo el mundo se mueve en python ya sabes que hay miles de lenguajes  ;)


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 31 Diciembre 2009, 18:35 pm
Masita ayudame un poco, voy a intentar hacer este ejercicio
( sabes que estoy empezando que del "Hola mundo" y el de " sacar las potencia de 2" no he echo nada mas). Pero bueno haber que consigo ....

mira mi idea es la siguiente voy a utilizar el codigo que me distes para sacar las potencias de 2
Código
Citar
n = 2
while True:
   print "por favor introduzca un numero"
   x = raw_input()
   try:
      x = int(x)
 
      print "1"
      while n < x:
         print n
         n = n * 2
      break
   except ValueError:
 
      print "Eso no es un numero"

Entonces lo que quiero hacer es modificar este trozo del código:
x = int(x)
 
      print "1"
      while n < x:
         print n
         n = n * 2
y encontrar una formula que haga lo siguiente:
( multiplicar el numero introducido por 36) y que a la ultima cifra del resultado le reste 4
así siempre me dara un resultado + o - de un numero = o - que 6  por su puesto ignoraría que el numero fuera positivo o negativo..
sé que es una chapuza pero esque con lo poquito que sé no doy para mas por el momento. tambien sería un dado un poco trucado porque si siempre introduce el mismo número siermpre daría el mismo resultado. pero por el momento si logro insertar esa formula en el código ese YO me doy por muy satisfecho. -----> sigo aprendiendo.







Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 31 Diciembre 2009, 19:48 pm
Ahora no tengo tiempo pero te envio un pm con mi direccion de correo me agregas y mañana te voy guiando para que lo hagas tu mismo. Si quieres mirar hasta entonces busca informacion sobre la libreria random o si dominas ingles escribe en tu sesion de python help(random).

Un saludo y feliz año nuevo!!


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 31 Diciembre 2009, 21:50 pm
He logrado hacer esto:
Citar
import random
for i in range(1):
      x = random.randint(1, 6)
print "dado1"     
print x
for i in range(1):
      x = random.randint(1, 6)
print "dado2"     
print x

me devuelve este resultado :

Citar
autodidacta@autodidacta-laptop:~$ python dados.py
dado1
2
dado2
1


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 1 Enero 2010, 16:48 pm
  Solo me falta ordenar los resultados

                                                 Código:
Citar
n = input("introduzca numero de dados: ")
a = input("introduzca numero de caras: ")
import random
for i in range(n):
    x = random.randint(1, a)
    print "dado"    
    print x
                                             Resultado:
Citar
autodidacta@autodidacta-laptop:~$ python ejercicio1.py
introduzca numero de dados: 3
introduzca numero de caras: 9
dado
2
dado
4
dado
8

 ;-)




Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 17:36 pm
Veo que vas avanzando poco a poco, ahora trata de que siempre te de los resultados de los dados imprimiendo primero el mayor y el ultimo el menor de los resultados y ya lo tendras.  ;)


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 1 Enero 2010, 18:59 pm
Código:
import random
a = input("Número de caras")
b = input("Número de dados")
for i in range (b):
   c = random.randint(1,(a))
   print "Dado:",+c
     
raw_input()


  Llegué a lo mismo pero no encuentro la forma de ordenar :S.


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 19:56 pm
Os dejo que os comais un poco la cabeza antes de daros alguna pista... :laugh:


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 1 Enero 2010, 19:59 pm
Código:
import random
a = input("Número de caras")
b = input("Número de dados")
for i in range (b):
   c = random.randint(1,(a))
   print "Dado:",+c
    
raw_input()


  Llegué a lo mismo pero no encuentro la forma de ordenar :S.

Mete todo en una lista y ordenala por el algoritmo de la burbuja, voy a ver si puedo resolverlo.


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 1 Enero 2010, 20:09 pm
Código:
import random
a = input("Número de caras")
b = input("Número de dados")
for i in range (b):
   c = random.randint(1,(a))
   print "Dado:",+c
    
raw_input()


  Llegué a lo mismo pero no encuentro la forma de ordenar :S.

Mete todo en una lista y ordenala por el algoritmo de la burbuja, voy a ver si puedo resolverlo.
 

   Tengo que irme ahora mismo, pero en cuanto llegué intentaré eso, lo de la burbuja lo encontré buscando en varias webs, también vi más algoritmos pero no supe cual usar.

  Saludos y gracias.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 20:15 pm
Los diferentes métodos de ordenación tienen diferentes enfoques y/o ventajas, pero tampoco es que sean TAN diferentes unos de otros. El de la burbuja es el "tradicional" (por decirle de algún modo) y más usado.

Leo, seguro que en un rato lo tienes resuelto y verás que poco varia de otros lenguajes ;) (obviamente el concepto no cambia, sigue siendo el mismo)

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 1 Enero 2010, 20:21 pm
Código
  1. #!/usr/bin/env python
  2. import random
  3. a = input("Numero de caras : ")
  4. b = input("Numero de dados : ")
  5. lista = []
  6. for i in range(b):
  7.    c = random.randint(1, (a))
  8.    print "Dado : ", c
  9.    lista.append(c)
  10. for elemento in lista:
  11.    print elemento
  12. # Burbuja
  13. for i in range(0, len(lista)):
  14.    for j in range(0, len(lista)):
  15.        if lista[i] > lista[j]:
  16.            auxiliar = lista[i]
  17.            lista[i] = lista[j]
  18.            lista[j] = auxiliar
  19. for elemento in lista:
  20.    print elemento

Código:
leo@lein:~/Escritorio$ python py.py
Numero de caras : 10
Numero de dados : 10
Dado :  3
Dado :  9
Dado :  3
Dado :  6
Dado :  8
Dado :  4
Dado :  8
Dado :  7
Dado :  1
Dado :  1
[3, 9, 3, 6, 8, 4, 8, 7, 1, 1]
[9, 8, 8, 7, 6, 4, 3, 3, 1, 1]
leo@lein:~/Escritorio$

Código:
lista.sort()
print lista
Ya está, no sabía como obtener la longitud de la lista.  :)


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 20:37 pm
Faltaria imprimir independientemente cada valor de la lista. Ya que asi te imprime la lista completa con los corchetes y demas. Pero basicamente es asi.

Con lo cual miniputo y punto para Leo!  ;-)

Otra forma de hacerlo era con el metodo "sort". Dejo un codigo de ejemplo:
Código
  1. import random
  2. indice = 0
  3. resultados=[]
  4. contador=0
  5.  
  6. dados = int(raw_input('Elija numero de dados:'))
  7. caras = int(raw_input('Elija numero de caras:'))
  8.  
  9. #genera las tiradas
  10. while indice < dados:
  11. x=random.randint(1,caras)
  12. resultados.append(x)
  13. indice = indice+1
  14. #ordena la lista
  15. resultados.sort()
  16.  
  17. #imprime los resultados
  18. for x in range(len(resultados)-1,-1,-1):
  19. print resultados[x]
  20.  


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 20:48 pm
La verdad que algunos métodos que trae python facilitan mucho las cosas, como el sort ;D
Por cierto, las listas se pueden recorrer sin recurrir a otras variables :P

Código
  1. import random
  2. try:
  3.    a = int(input("Ingresa el número de caras del dado: "),10)
  4.    b = int(input("Ingresa el número de tiradas: "),10)
  5. except:
  6.    print("Alguno de los valores ingresados no es numérico")
  7.  
  8. Tiradas = []
  9.  
  10. for i in range(b):
  11.    Tiradas.append(random.randint(1,a))
  12.  
  13. Tiradas.sort()
  14.  
  15. for i in Tiradas:
  16.    print(i)

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 20:51 pm
Pero en ese caso imprimiria de menor a mayor. De todos modos se que puedes ordenar las listas segun lo que quieras, añadiendo algun parametro a sort(). Tendre que indagar en ello


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 21:09 pm
Estamos en ejercicios, así que lo suyo sería discutir las funciones en scripting, pero el método sort acepta parámetros :P

Código
  1. Tiradas.sort(key=None,reverse=True)

Y sino la otra manera ...

Código
  1. Tiradas.sort()
  2. Tiradas.reverse()

:P


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 1 Enero 2010, 22:04 pm
Bueno, me toca proponer el ejercicio

-Apartir de una clase llamada Rectangulo, obtener el area y perimetro(métodos).

Aprovecho para preguntar, ¿hay alguna forma de hacer un bucle mientras no me den un valor númerico?

Apartir del código de Novlucker:

Código
  1. try:
  2.    base = int(input("Base : "))
  3.    altura = int(input("Altura : "))
  4. except:
  5.    print "Uno de los valores no es numerico"
  6.  


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 22:26 pm
Dejo este y ya no participo hasta bien no suba un poquito el nivel, así quienes responden son los que estan comenzando con python :P

Código
  1. class Rectangulo:
  2.    def __init__(self,Largo,Alto):
  3.        self.largo = Largo
  4.        self.alto = Alto
  5.  
  6.    def Area(self):
  7.        return self.largo*self.alto
  8.  
  9.    def Perimetro(self):
  10.        return self.largo*2+self.alto*2
  11.  
  12. try:
  13.    a = int(input("Ingrese base del rectangulo: "),10)
  14.    b = int(input("Ingrese altura del rectangulo: "),10)
  15.    miRectangulo = Rectangulo(a,b)
  16.    print("\nEl area del rectángulo es: " + str(miRectangulo.Area()))
  17.    print("El perímetro del rectángulo es: " + str(miRectangulo.Perimetro()))
  18. except:
  19.    print("\nAlguno de los valores ingresados no es numérico")
  20.  

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 22:28 pm
Te me adelantaste  :laugh:

Espero tu ejercicio Novlucker  ;D


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 22:34 pm
Leo

Código
  1. def Ingreso():
  2.    try:
  3.        base = int(input("Base :"),10)
  4.        altura = int(input("Altura :"),10)
  5.    except:
  6.        print("Alguno de los valores ingresados no es numérico")
  7.        Ingreso()
  8.  
  9. Ingreso()


Sobre el ejercicio:
Siguiendo con el ejemplo anterior, crear una clase RectanguloComplejo que herede de Rectangulo, y que contemple un nuevo método para cálculo del largo de la diagonal de dicho rectángulo ;D

Saludos

P.D: creo que todos menos yo usan Python 2.6, así que recordar modificar los input


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 1 Enero 2010, 22:44 pm
Código
  1. #!/usr/bin/env python
  2. from math import sqrt
  3. class Rectangulo:
  4.    """Obtiene el area y perimetro de un rectangulo"""
  5.    def __init__(self, base, altura):
  6.        self.base = base
  7.        self.altura = altura
  8.    def Area(self):
  9.        return self.base * self.altura
  10.    def Perimetro(self):
  11.        return 2 * (self.base * self.perimetro)
  12.    def Diagonal(self):
  13.        return sqrt((self.base * self.base) + (self.altura * self.altura))  
  14. class RectanguloComplejo(Rectangulo):
  15.    pass
  16. try:
  17.    base = int(input("Base : "))
  18.    altura = int(input("Altura : "))
  19. except:
  20.    print "Uno de los valores no es numerico"
  21. rectangulito = RectanguloComplejo(base, altura)
  22. print "Diagonal : ", rectangulito.Diagonal()

Tuve que buscar en el libro, a ver si era así, Novlucker.

Edito:

Creo que es así:

Código
  1. class RectanguloComplejo(Rectangulo):
  2.    pass
  3.    def Diagonal(self):
  4.        return sqrt((self.base * self.base) + (self.altura * self.altura))  


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 22:50 pm
Se me olvido la raiz....


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 22:56 pm
Leo, en realidad me refiero a que el RectanguloComplejo tenga un método diagonal, es decir, tu has modificado Rectangulo para que contemple un nuevo método, pero la gracia de la orientación a objetos y la herencia, es que quien hereda tenga las propiedades y métodos de la base, y que a su vez tenga los suyos propios.

Es decir, RectanguloComplejo es quien debe de tener el nuevo método :P

Masita, Pitágoras!, eso no es la diagonal :silbar:

Edito
Leo, eso mismo que has hecho en la modificación era lo que se pedía :P, eso si, quita el PASS, eso se usa para decir "aquí no hay nada"


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 1 Enero 2010, 22:57 pm
A ver, fijate ahora en mi último edit del mensaje anterior, a ver si era así.
Código
  1. #!/usr/bin/env python
  2. from math import sqrt
  3. class Rectangulo:
  4.    """Obtiene el area y perimetro de un rectangulo"""
  5.    def __init__(self, base, altura):
  6.        self.base = base
  7.        self.altura = altura
  8.    def Area(self):
  9.        return self.base * self.altura
  10.    def Perimetro(self):
  11.        return 2 * (self.base * self.perimetro)  
  12. class RectanguloComplejo(Rectangulo):
  13.    def Diagonal(self):
  14.        return sqrt((self.base * self.base) + (self.altura * self.altura))  
  15. try:
  16.    base = int(input("Base : "))
  17.    altura = int(input("Altura : "))
  18. except:
  19.    print "Uno de los valores no es numerico"
  20. rectangulito = RectanguloComplejo(base, altura)
  21. print "Diagonal : ", rectangulito.Diagonal()


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 23:00 pm
Eso mismo, solo quita el pass, pero se da por bueno.

Siguiente ejercicio! ;D


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 1 Enero 2010, 23:03 pm
Bien.  ;D

El ejercicio para ustedes es :

Llenar una lista de tamaño n de números primos.


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 1 Enero 2010, 23:06 pm
ofuu, habeis subido unos cuantos de escalones   :rolleyes: , bueno yo aún estoy comenzando el primer ejercicio de los dados para mí ha sido ya un gran reto... seguiré haciendo ejercicios mas acordes con mi nivel y cuando esté preparado seguire participando.. gracias..



Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 23:44 pm
Me ha costado pero al final ha salido.

Código
  1. def primos (n):
  2. indice=0
  3. primo=[]
  4. for i in range(2,n):
  5. for x in range(2,i):
  6. indice=0
  7. if i % x == 0:
  8. indice +=1
  9. break
  10.  
  11. if indice==0:
  12. primo.append(i)
  13. break
  14.  
  15.  
  16. print primo
  17. primos(60)
  18.  


Las prisas ya sabes pitagoras.... xD


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 1 Enero 2010, 23:48 pm
Y el 2? :silbar:
Igual eso no soluciona el problema de Leo ... eso muestra todos los primos menores que N, pero lo que se busca son N primos dentro de una lista ;D

Yo ya lo tengo desde hace un rato, pero como había dicho no lo voy a poner, alguien tiene algún ejercicio para que haga? :xD
Citar
>>>
Ingresa el largo de la lista: 20
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
>>>


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 1 Enero 2010, 23:58 pm
Me di cuenta despues por eso lo estoy cambiando  :P

Vale creo que ahora no hay ningun fallo o almenos eso espero.

Código
  1. def primos (n):
  2. i = 2
  3. indice = 0
  4. primo = []
  5. while i < i+1:
  6. i +=1
  7. if not n == len(primo):
  8. if indice == 0:
  9. primo.append(i-1)
  10.  
  11. for x in range(2,i):
  12. indice=0
  13.  
  14. if i % x == 0:
  15. indice +=1
  16. break
  17.  
  18.  
  19. else:
  20. break
  21.  
  22.  
  23. print primo
  24. primos(60)
  25.  
  26.  


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 2 Enero 2010, 00:50 am
Esta incorrecto :-\ ...

Primos(20)
Citar
>>>
[2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39]
>>>

Veo que ya lo has notado :P


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 2 Enero 2010, 00:57 am
Esta incorrecto :-\ ...

Primos(20)
Citar
>>>
[2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39]
>>>

Veo que ya lo has notado :P


Corregido en el codigo de arriba.... y mejor me voy a dormir ya que hoy parece ser que las neuronas me patinan....


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 2 Enero 2010, 01:06 am
Ahora si ;-)
El que tenía yo :P

Código
  1. def primo(numero):
  2.    for i in range(2,numero):
  3.        if(numero % i == 0):
  4.            return False
  5.    return True
  6.  
  7. def ListaPrimos(N):    
  8.    Primos = []
  9.    i = 2
  10.    while (len(Primos)< N):
  11.        if(primo(i) == True):
  12.            Primos.append(i)
  13.        i +=1
  14.    return Primos
  15.  
  16. print(ListaPrimos(60))

Siguiente ejercicio!

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 2 Enero 2010, 01:11 am
Cuanto queda por aprender.... jaja (aunq me lo he pasado como un enano  :xD)

Bueno el siguiente lo ponemos muuuy facilito para los que estan empezando....

-Pedir una cadena de texto y comprobar si es un palindromo. Para los que no lo sepan un palindromo es una palabra o frase que se lee igual en una direccion que en otra. (ej: Sara Baras)

Asi que los que estais empezando para este no teneis escusa.


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 2 Enero 2010, 13:40 pm

    Uah, habéis avanzado mucho, yo ahora mismo no puedo hacer nada, resulta que no estoy en mi casa, y no puedo estar por mucho tiempo aquí, pero en cuanto esté intentaré hacer cada uno de los ejercicios para ver si puedo.
 
   Saludos.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 2 Enero 2010, 17:39 pm
A ver si alguien se anima, el de los palindromos es sencillito, así que como ha dicho Masita, los que empiezan tampoco tienen excusas :P


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 2 Enero 2010, 17:58 pm
Código
  1. #!/usr/bin/python
  2. def espalindromo(palabra):
  3.  palabrasinespacios = ""
  4.  for i in range(len(palabra)):
  5.    if palabra[i]!=" ":
  6.      palabrasinespacios+=palabra[i]
  7.  for i in range(len(palabrasinespacios)/2):
  8.    if palabrasinespacios[i]!=palabrasinespacios[len(palabrasinespacios)-i-1]:
  9.      return False
  10.  return True
  11. while 1:
  12.  palabra = raw_input("Escribe la frase/palabra : ")
  13.  if espalindromo(palabra):
  14.    print "Esa frase/palabra es palindroma "
  15.  else :
  16.    print "Esa frase/palabra no es palindroma"
  17.  
Ahí está.
Código:
[braulio@washingmachine ejer]$ python palin
Escribe la frase/palabra : dabale arroz a la zorra el abad
Esa frase/palabra es palindroma
Escribe la frase/palabra :


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 2 Enero 2010, 18:10 pm
Ahora le toca a braulio23 poner su ejercicio ;D

Aquí lo que hubiese sido mi script:
Código
  1. def EsPalindromo(Texto):
  2.    Texto = Texto.lower().replace(" ","")
  3.    if(Texto == Texto[::-1]):
  4.        return True
  5.    return False
  6.  
  7. palabra = input("Escribe la palabra: ")
  8. if EsPalindromo(palabra):
  9.    print("\nPalabra/frase palindroma")
  10. else:
  11.    print("\nPalabra/frase NO palindroma")

Como ya he dicho antes, estoy dejando estos scripts para que vean como se podrían mejorar, si a alguien le molesta que lo haga simplemente me lo dice por aquí (https://foro.elhacker.net/pm.html;sa=send;u=50057)

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 2 Enero 2010, 18:15 pm
Ahora le toca a braulio23 poner su ejercicio ;D

Aquí lo que hubiese sido mi script:
Código
  1. def EsPalindromo(Texto):
  2. Texto = Texto.lower().replace(" ","")
  3. if(Texto == Texto[::-1]):
  4. return True
  5. return False
  6.  
  7. palabra = input("Escribe la palabra: ")
  8. if EsPalindromo(palabra):
  9. print("\nPalabra/frase palindroma")
  10. else:
  11. print("\nPalabra/frase NO palindroma")

Como ya he dicho antes, estoy dejando estos scripts para que vean como se podrían mejorar, si a alguien le molesta que lo haga simplemente me lo dice por aquí (https://foro.elhacker.net/pm.html;sa=send;u=50057)

Saludos

Impresionante :xD ni me acordaba que existía el tercer número en los slices :xD

Pues mi ejercicio va a ser ... un programa que dado un número , lo descomponga en sus factores primos .
Ejemplo :  360 = 2*5*2*3*3, 4 = 2*2 , 23 = 23
Yo ya tengo el mio
Código:
[braulio@washingmachine ejer]$ python fact
Escribe un numero : 65080
[2, 2, 2, 5, 1627]


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 2 Enero 2010, 18:18 pm
No, a nadie le molesta.

¿En el ejercicio sobre los palindromos, habría que quitar/reemplazar espacios, luego usar el método reverse() contra la cadena?


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 2 Enero 2010, 18:24 pm
En el ejemplo que he dejado:

Cambiar texto a minúsculas, porque sino "Reconocer" no sería palindroma.
Reemplazar espacios.
Invertir la cadena, pero el método reverse() no funciona en cadenas, en lugar de eso he tratado al cadena como si fuera un array de caracteres (que lo es) para invertirla, eso se hace en memoria y la palabra sigue estando igual

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 2 Enero 2010, 18:52 pm
La verdad que algunos métodos que trae python facilitan mucho las cosas, como el sort ;D
Por cierto, las listas se pueden recorrer sin recurrir a otras variables :P

Código
  1. import random
  2. try:
  3.    a = int(input("Ingresa el número de caras del dado: "),10)
  4.    b = int(input("Ingresa el número de tiradas: "),10)
  5. except:
  6.    print("Alguno de los valores ingresados no es numérico")
  7.  
  8. Tiradas = []
  9.  
  10. for i in range(b):
  11.    Tiradas.append(random.randint(1,a))
  12.  
  13. Tiradas.sort()
  14.  
  15. for i in Tiradas:
  16.    print(i)

Saludos

    Buenas, tengo una duda Novlucker,  porque al final de las variables con input pones un " 10 " ¿?.

 
  Y esto último no lo entendí muy bien, lo de append, y lo que hace realmente el " sort". :

Código:
  for i in range(b):
    Tiradas.append(random.randint(1,a))

Tiradas.sort()

for i in Tiradas:
    print(i)


   Saludos.


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 2 Enero 2010, 18:59 pm
Bueno ahi va mi codigo si alguien le da el visto bueno posteo el siguiente ejercicio.

Código
  1. def primo(numero):
  2. primos=[]
  3. for i in range(2,numero):
  4.        if(numero % i == 0):
  5. return False
  6. return True
  7.  
  8. def Factorizar(n):
  9. factores=[]
  10. while n != 1:
  11. i=2
  12. while i <= n:
  13. if (n % i == 0) and primo(i)== True or  i==2:
  14. factores.append(i)
  15. n = n/i
  16. i+=1
  17. else:
  18. i+=1
  19. print factores
  20.  
  21. Factorizar(360)
  22.  

PD: He reutilizado un poco tu codigo Novlucker

Caronte (nombrelista).append(lo que queramos añadir) lo que hace es añadir el elemento dentro del parantesis al final de la lista.
Respecto a lo de sort() es un metodo que ordena los elementos de una lista.


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 2 Enero 2010, 19:03 pm
La verdad que algunos métodos que trae python facilitan mucho las cosas, como el sort ;D
Por cierto, las listas se pueden recorrer sin recurrir a otras variables :P

Código
  1. import random
  2. try:
  3.    a = int(input("Ingresa el número de caras del dado: "),10)
  4.    b = int(input("Ingresa el número de tiradas: "),10)
  5. except:
  6.    print("Alguno de los valores ingresados no es numérico")
  7.  
  8. Tiradas = []
  9.  
  10. for i in range(b):
  11.    Tiradas.append(random.randint(1,a))
  12.  
  13. Tiradas.sort()
  14.  
  15. for i in Tiradas:
  16.    print(i)

Saludos

    Buenas, tengo una duda Novlucker,  porque al final de las variables con input pones un " 10 " ¿?.

 
  Y esto último no lo entendí muy bien, lo de append, y lo que hace realmente el " sort". :

Código:
  for i in range(b):
    Tiradas.append(random.randint(1,a))

Tiradas.sort()

for i in Tiradas:
    print(i)


   Saludos.
Lo de 10 creo que es para que la entrada sea base 10.
El .sort() lo que hace es ordenar la lista.
El .append() mete un elemento mas en la lista.
@ Masita, parece válido.
Pongo el mío :
Código
  1. #!/usr/bin/python
  2. import math
  3. def esprimo(numero):
  4.  for i in range(2,int(math.sqrt(numero))+1):
  5.    if numero%i == 0:
  6.      return False
  7.  return True
  8. def listadefactores(numero):
  9.  factoresprimos = []
  10.  if numero==1:
  11.   return []
  12.  for i in range(2,numero+1):
  13.    if esprimo(i) and numero%i==0:
  14.      factoresprimos.append(i)
  15.      factoresprimos+=listadefactores(numero/i)
  16.      break
  17.  return factoresprimos
  18. while 1:
  19. print listadefactores(int(raw_input("Escribe un numero : ")))
  20.  


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 2 Enero 2010, 19:07 pm
   Sé que es para ordenar, pero ordenar en que sentido, mayor-menor, números de palabras, ... etc.


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 2 Enero 2010, 19:08 pm
Ordena de menor a mayor.


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 2 Enero 2010, 19:09 pm
Depende del argumento que le pases, eso no lo controlo mucho luego busco y te envio un PM si no te contestan por aqui. Recuerda que la mejor manera de saber que hace algo es probarlo  ;)

Bien siguiente ejercicio como veo que la gente con las listas y las cadenas lo lleva un poco flojo:


-Tomar dos cadenas de texto y ver cual es la letra que mas se repite.
-Imprimir la letra y el numero de veces que se repite


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 2 Enero 2010, 19:12 pm

   Una duda más,  cuando por ejemplo hacéis:

  Tiradas = []
 
  Eso quiere decir que crear una lista vacía para luego introducir algo, acorde a lo que ingrese el usuario ¿?

    Saludos.


  PD: Disculpen si molesto al preguntar tanto, si eso me dan el toque.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 2 Enero 2010, 19:17 pm
Exacto CaronteGold, es para iniciarlizar el array :P

Dejo mi script

Código
  1. def primo(numero):
  2.    for i in range(2,numero):
  3.        if(numero % i == 0):
  4.            return False
  5.    return True
  6.  
  7. def ProxPrimo(i):
  8.    i +=1
  9.    while (1):
  10.        if(primo(i) == True):
  11.            return i
  12.        i +=1
  13.  
  14. def Factorizar(nValor):
  15.    f = 2
  16.    Factores = []
  17.    while (nValor != 1):
  18.        if (nValor % f == 0):
  19.            Factores.append(f)
  20.            nValor /= f
  21.        else:
  22.            f = ProxPrimo(f)
  23.    return Factores
  24.  
  25. print(Factorizar(360))

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 2 Enero 2010, 19:32 pm
Ya tengo el mío al de Masita.

Código
  1. #!/usr/bin/python
  2. diccionario = {}
  3. cadena1 = raw_input("Escribe la cadena1 : ")
  4. cadena2 = raw_input("Escribe la cadena2 : ")
  5. for letra in cadena1:
  6.  if not diccionario.has_key(letra):
  7.    diccionario[letra] = 1
  8.  else :
  9.    diccionario[letra] += 1
  10. for letra in cadena2:
  11.  if not diccionario.has_key(letra):
  12.    diccionario[letra] = 1
  13.  else :
  14.    diccionario[letra] += 1
  15. mayor = 0
  16.  
  17. for letra in diccionario.keys() :
  18.  if diccionario[letra]>mayor:
  19.    mayor=diccionario[letra]
  20.    masrepetida = letra
  21. print "La letra mas repetida es ",masrepetida,"con",mayor," repeticiones"


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 2 Enero 2010, 19:33 pm
ufff, como me está enganchando esto del python por dios ...

bueno me ha llevado mas de 6 horas con el phyton para todos en la barra de tareas llegar a este codigo alfin creo que lo he conseguido:

Código:
Citar
cadena = raw_input("escribe una palabra:")

longitud = len(cadena)
invertida = ""
z = 0
while z < longitud :
    invertida = invertida+cadena[longitud-1-z]
    z = z+1
if invertida == cadena :
   print "Su palabra es un palindromo"
else:
   print "su palabra no es un palindromo"

Respuesta:
Citar
autodidacta@autodidacta-laptop:~$ python palindromo.py
escribe una palabra:patata
su palabra no es un palindromo
autodidacta@autodidacta-laptop:~$ python palindromo.py
escribe una palabra:santa_barbaras
su palabra no es un palindromo
autodidacta@autodidacta-laptop:~$ python palindromo.py
escribe una palabra:apa
Su palabra es un palindromo
autodidacta@autodidacta-laptop:~$ python palindromo.py
escribe una palabra:apa apa
Su palabra es un palindromo

lo que no consigo es que me lea cadenas con mas palabras ...

MODIFICO:

al fín .. ( separado y con tilde ) : S

PD: espero no estar incordiando si las respuestas de mis ejercicios van mas atrasadas, estoy empezando en esto.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 2 Enero 2010, 19:58 pm
No hay problema Autodidacta, cada uno a su ritmo ;)

El de braulio23 esta bien, pero agranda eso por favor!

Código
  1. import operator
  2. def ContarChars(Frase):
  3.        chars = {}
  4.        Frase = Frase.lower()
  5.        for c in Frase:
  6.                if c in chars.keys():
  7.                        chars[c] += 1
  8.                else:
  9.                        chars[c] = 1
  10.        return sorted(chars.items(),key=operator.itemgetter(1),reverse=True)
  11.  
  12. Frase1 = input("Ingresa la primera frase: ")
  13. Frase2 = input("Ingresa la segunda frase: ")
  14.  
  15. Letras = ContarChars(Frase1 + Frase2)
  16. for L in Letras:
  17. print(L)

Y con eso tenemos nuestro propio script para analizar frecuencias en textos cifrados ;D

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 3 Enero 2010, 15:13 pm
El próximo ejercicio, un programa que vaya escribiendo la sucesión de fibonacci y además diga si cada número es primo o no.
La sucesión de fibonacci es una sucesión de números enteros donde cada número es la suma de los dos anteriores (de la sucesión)
Primeros números : 0,1,1,2,3,5,8,13,21


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 3 Enero 2010, 15:49 pm
El próximo ejercicio, un programa que escriba N números de la sucesión de fibonacci y además diga si cada número es primo o no.
Que sino va a ser infinito ;D

Donde están los que pedían ejercicios sencillos? En este caso solo habría que crear la función que escriba la sucesión, para los primos se puede reutilizar código anterior :P

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 3 Enero 2010, 17:34 pm
Venga chicos que este tambien es secillito, intentarlo y si no se resuelve de aqui a mañana pongo el mio.

Saludos y feliz python!


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 3 Enero 2010, 22:10 pm
Alguien me puede dar una pista para lograr que me diga cuales son primos y cuales no? :
he llegado asta aquí.

Código:
n = input("introduzca numero para la susecion: ")
import random
for i in range(n):
    def fibonacci():
        a, b = 0, 1
        while True:
            yield a
            a, b = b, a+b

f = fibonacci()
for x in range(n):
    print f.next(),

Respuesta:

Citar
autodidacta@autodidacta-laptop:~$ python fibonacci.py
introduzca numero para la susecion: 10
0 1 1 2 3 5 8 13 21 34
autodidacta@autodidacta-laptop:~$


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 3 Enero 2010, 22:28 pm
De que libro/tutorial estás aprendiendo python???
La función para números primos está en la página anterior me parece.


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 4 Enero 2010, 00:12 am
 Python para dodos  e Introducción a la programación con Python.

estoy intentando integrar este codigo de la pagina anterior el que puso Novluker pero no encuentro la manera.
Citar
def primo(numero):
    for i in range(2,numero):
        if(numero % i == 0):
            return False
    return True
 
def ListaPrimos(N):   
    Primos = []
    i = 2
    while (len(Primos)< N):
        if(primo(i) == True):
            Primos.append(i)
        i +=1
    return Primos
 
print(ListaPrimos(60))
sigo, sigo buscando...


Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 4 Enero 2010, 00:44 am
He usado la función primo() de Novlucker para resolverlo:

Código
  1. #!/usr/bin/env python
  2. def primo(numero):
  3.    if numero <= 1:
  4.        return False
  5.    for i in range(2,numero):
  6.        if(numero % i == 0):
  7.            return False
  8.    return True
  9. def Fibonacci(numero):
  10.    i = 1
  11.    j = 0
  12.    for k in range(1,  numero):
  13.        j = i + j
  14.        i = j - i
  15.    return j
  16. try:
  17.    n = int(raw_input("N : "))
  18. except:
  19.    print "Valor no numerico"
  20. for i in range(1,  n + 1):
  21.    if primo(Fibonacci(i)) == True:
  22.        print Fibonacci(i),  "primo"
  23.    else:
  24.        print Fibonacci(i)

Código:
leo@lein:~/Escritorio$ python py.py 
N : 15
0
1
1
2 primo
3 primo
5 primo
8
13 primo
21
34
55
89 primo
144
233 primo
377
leo@lein:~/Escritorio$


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 4 Enero 2010, 01:02 am
leo  ;-) , bueno he estado cerca. Me dejas poner un ejercicio? ya que pocos ejercicios lograré resolver sin vuestra ayuda., ( anda dame cuartelillo) ;D


crear un programa (llamado paiton) que haga lo siguiente:
ejemplo:
paiton dice: hola me llamo paiton, cual es tu nombre? # y el usuario introduzca una respuesta

ejemplo:
usuario dice: blablabla me llamo (NOMBRE). # y paiton de otra respuesta reconociendo su nombre y lo muestre en su respuesta

ejemplo
paiton dice: hola (NOMBRE) blablabla blablabla (ADIOS).# si usuario no da una respuesta que contenga (repetirADIOS) se cierra el programa, en caso contrario, paiton vuelve a escribir otra linea y cierra programa
 

          -- usuario dice: blablablabla
----------
           -- paiton dice: blablabla (ADIOS) # y se cierra el programa.



Título: Re: Juego ejercicios [Python]
Publicado por: leogtz en 4 Enero 2010, 01:06 am
Claro, hazlo, yo me voy a una fiesta.  ::)  ;D


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 4 Enero 2010, 01:17 am
gracias leo


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 4 Enero 2010, 02:02 am
 Pero, Autodidacta, para que reconozca el nombre, tendríamos que poner un diccionario de nombres y que buscase a ver si existe o no .. xD.

  EDITO:

  Aquí pongo el ejercicio anterior, aunque ya lo posteó Leo.

  Los tres primeros números los printeo manualmente los demás se originan solos.

 Está puesto para que cuando "y" sea igual o mayor que 100 se corte el bucle.
Código
  1. x = 0
  2. y = 1
  3. t = 2
  4.  
  5. def primo(numero):
  6.      for i in range(2,numero):
  7.        if(numero % i == 0):
  8.  
  9.            return False
  10.  
  11.      return True
  12.  
  13. print x
  14. print y
  15. print y
  16. while True:
  17.    x = x+y
  18.    y = x+y
  19.    t = x+y
  20.    if primo(y):
  21.        print y, "--->Primo"
  22.    else:
  23.        print y
  24.    if primo(t):
  25.        print t, "--->Primo"
  26.    else:
  27.        print t
  28.    if y >= 100:
  29.          break
  30.  
  31.  
Salida:


Código:
0
1
1
2 --->Primo
3 --->Primo
5 --->Primo
8
13 --->Primo
21
34
55
89 --->Primo
144
233 --->Primo
377

 


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 4 Enero 2010, 02:30 am
cierto CaronteGold, ya he pensado en eso para que no haya que poner un diccionario tan grande.
haremos que usuario1 escriba en minuscula y solo la respuesta sea en mayuscula.

ejemplo: hola pues yo me llamo AUTODIDACTA
así paitón solo tendría que buscar las mayusculas de la cadena no?

PD: podría ser así? + o -

( llevo un rato buscando un afunsion que busque mayusculas en una cadena )


    


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 4 Enero 2010, 02:36 am

  Voy a mirar a ver que puedo hacer.. xD.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 4 Enero 2010, 02:41 am
Y yo tenía la mía :P

Código
  1. def Primo(numero):
  2.        if(numero == 1):
  3.                return False
  4.        for i in range(2,numero):
  5.                if(numero % i == 0):
  6.                        return False
  7.        return True
  8.  
  9. def FibonacciPrimo(n):
  10.        a = 0
  11.        b = 1
  12.        Sucesion = [[a,False],[b,False]]
  13.        for i in range(n):
  14.                a, b = b, a + b
  15. #Me pregunto por que no habia utilizado asignacion multiple :P
  16.                if(Primo(b) == True):
  17.                        Sucesion.append([b,True])
  18.                else:
  19.                        Sucesion.append([b,False])
  20.        return Sucesion
  21.  
  22. for e in FibonacciPrimo(50):
  23.        print(e)

Este devuelve una lista por medio de FibonacciPrimo, y me gustan sus soluciones ;)


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 4 Enero 2010, 02:56 am

   No tengo ni idea de como hacer lo de las mayúsculas....  :-X


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 4 Enero 2010, 03:12 am
yo estoy mirando esto, hay una tabla de expresiones regulares, a lomejor tu le sacas mas partido
http://www.estrellateyarde.es/discover/expresiones-regulares


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 4 Enero 2010, 03:35 am
Bueno dejo el codigo que tenia del ejercicio anterior.  ;)

Código
  1. def primo(numero):
  2.    if numero == 1:
  3. return False
  4.    for i in range(2,numero):
  5.        if(numero % i == 0):
  6.  
  7.            return False
  8.    return True
  9. def serie(n):
  10. a, b = 0,1
  11. print a
  12. for i in range(n-1):
  13. if primo(b) == True:
  14. print b, "es primo."
  15. else:
  16. print b
  17. a, b = b, a + b
  18. serie(12)
  19.  

Mañana me pongo con el siguiente que hoy no me encuentro muy bien. Autodidacta ya no hace falta que te conteste al MP jeje


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 4 Enero 2010, 08:12 am
He aqui mi respuesta al ejercicio, es como las aventuras conversacionales de antaño  :xD
No hace falta poner todo en mayusculas solo la inicial. El texto puede empezar igualmente por mayuscula. ej: Me llamo Masita .

No abro los parentesis por que me da un error en la codificacion...

Código
  1. def Enombre(Saludo):
  2. cadena = Saludo
  3. for i in range(65,91):
  4. pos1= cadena.find(chr(i),2)
  5. if pos1 != -1:
  6. break
  7. a = cadena[pos1]
  8. cadena1 = cadena.split()
  9. for i in range(1,len(cadena1)):
  10. if cadena1[i].find(a) != -1:
  11. Nombre = cadena1[i]
  12.  
  13. return Nombre
  14.  
  15. y = 0
  16. x = raw_input("Hola, me llamo Autodidacta.Tu como te llamas? ")
  17.  
  18. print "Mucho gusto",Enombre(x),"\n Si quieres dejar de hablar conmigo solo tienes que escribir adios"
  19.  
  20. while y != "adios":
  21. y = raw_input("Que te gustaria hacer?  ")
  22.  
  23. if y == "Resolver este ejercicio" or y == "resolver este ejercicio":
  24. print "Bien resolviste el ejercicio!!!"
  25.  
  26. if y == "Comer" or y == "comer":
  27. print "Pedire unas pizzas"
  28.  
  29. if y == "Beber" or y == "beber":
  30. c = raw_input("Quieres agua o prefieres zumo?  ")
  31. if c == "Agua" or c == "agua":
  32. print "Aqui tienes"
  33. elif c == "Zumo"  or c == "zumo":
  34. raw_input("Lo quieres frio?"  )
  35. print "Aqui tienes tu", c
  36. else:
  37. print "No tengo de eso, lo siento"
  38. print "Hasta la vista", Enombre(x)
  39.  
  40.  

Me imagino que era algo asi lo que pedias, si me das el visto bueno pongo un nuevo ejercicio.

Perdon por el doble post pero separado creo que estara todo mas claro.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 4 Enero 2010, 11:05 am
Masita, para evitar hacer comparaciones dobles se debería de hacer algo así:

Código
  1. while y != "adios":
  2. y = raw_input("Que te gustaria hacer? ")
  3. if y.lower() == "resolver este ejercicio":
  4. print "Bien resolviste el ejercicio!!!"
  5. if y.lower() == "comer":
  6. print "Pedire unas pizzas"
  7. if y.lower() == "beber":
  8. c = raw_input("Quieres agua o prefieres zumo? ")
  9. if c.lower() == "agua":
  10. print "Aqui tienes"
  11. elif c.lower() == "zumo":
  12. raw_input("Lo quieres frio?" )
  13. print "Aqui tienes tu", c
  14. else:
  15. print "No tengo de eso, lo siento"
  16. print "Hasta la vista", Enombre(x)

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 4 Enero 2010, 14:59 pm
Si lo pense luego y en meterle un re.match() para no tener que poner solo la palabra. Pero eran las 8 de la mañana y aun no habia pegado ojo :xD


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 4 Enero 2010, 15:04 pm
Y donde esta tu ejercicio? porque ese de autodidacta debería de quedar así, más que eso no se puede sin querer meterse a reconocer frases y desarrollar cierta IA :P

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 4 Enero 2010, 15:24 pm
Bien mi siguiente ejercicio tambien es sencillo pero tienes que conocer las herramientas... (vamos como todo) cuando vaya ganando o si la gente quiere se le iran añadiendo cosas.


-Listar el contenido del directorio actual (script) y exportarlo a un archivo de texto

 ;D


Título: Re: Juego ejercicios [Python]
Publicado por: Autodidacta en 4 Enero 2010, 16:17 pm
 Masita, Novluker  ;-)  no hay codigo que se os resista ehh...
esta es la respuesta que da a tu codigo Masita, la parte del while puse la de Novluker:

Citar
autodidacta@autodidacta-laptop:~$ python Paiton.py
Hola, me llamo Autodidacta. Tu como te llamas? yo me llamo Masita
Mucho gusto Masita
 Si quieres dejar de halbar conmigo solo tienes que escribir adios
que te gustaria hacer? resolver este ejercicio
Bien resolviste el ejercicio!!!
que te gustaria hacer? probaré escrbir Comer
que te gustaria hacer? comer
Pedire unas pizzas
que te gustaria hacer? beber
Quieres agua o prefieres zumo? agua
Aqui tienes
que te gustaria hacer? zumo
que te gustaria hacer? beber
Quieres agua o prefieres zumo? zumo
Lo quieres frio?si
Aqui tienes tu zumo
que te gustaria hacer? adios
Hasta la vista Masita
autodidacta@autodidacta-laptop:~$


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 4 Enero 2010, 21:03 pm
 
Código
  1. import os
  2. a = os.getcwd ()
  3. b = os.listdir(a)
  4. f = open("archivo3.txt", "w")
  5. f.writelines(b)
  6. f.close()
  7.  
  8. raw_input()
  9.  

   Lo que pasa es que la salida es mala, y no sé como hacer para que quede bien ordenado:

 Salida:

Código:
 Cubos y tiradas.pyJuego Python PyGame.pyMostrar directorio y exportarlo.pyPaiton.pyPalabras palindromas.pyPy.batRectángulo.pySucesión Fibonacci.py

  Si consigo la salida mejor, lo edito.

EDITO:

 Ya está xD:

 
Código
  1. import os
  2. a = os.getcwd ()
  3. b = os.listdir(a)
  4. f = open("archivo3.txt", "w")
  5. for i in b:
  6. cx = "\n",i
  7. f.writelines(cx)
  8. f.close()
  9.  
  10. raw_input()

  Salida ( es decir el .txt ):

  
Código:
Cubos y tiradas.py
Juego Python PyGame.py
Mostrar directorio y exportarlo.py
Paiton.py
Palabras palindromas.py
Py.bat
Rectángulo.py
Sucesión Fibonacci.py



Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 4 Enero 2010, 21:32 pm
ok te dejo el mio para que veas otra manera de que quede ordenado.

Código
  1. import os
  2.  
  3. def ls():
  4. a = os.getcwd()
  5. b = os.listdir(a)
  6.  
  7. return "\n".join(b)
  8.  
  9. def texto():
  10. t = open("ls.txt","w")
  11. t.writelines(ls())
  12.  
  13. texto()
  14.  
  15.  
Esperando tu ejercicio


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 4 Enero 2010, 21:42 pm

  Ejercicio... , pues crear un objeto ( triángulo ) y calcular sus razones trigonométricas ( Seno,Coseno y Tangente) dados sus tres lados y sus tres ángulos.


  Saludos.


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 4 Enero 2010, 21:49 pm
crear==dibujar?


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 4 Enero 2010, 22:07 pm
  No, pero ahora que lo dices, podría ser una alternativa distinta, como veas, si quieres hacerlo así, perfecto.

  Una cosa, los ángulos dados, para que no haya mucha complicación que se indique entre que lados se forman, ejemplo:


  Ángulo entre Lado1 y Lado2 = 90 ( siempre )

  Ángulo entre Lado1 y Hipotenusa = x
 
  Ángulo entre Lado2 y Hipotenusa  = y

  Saludos.

  EDITO:

 He visto en la web de Python, un módulo para lo de fibonacci.

http://docs.python.org/tutorial/modules.html

   


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 5 Enero 2010, 04:08 am
Alguien va a hacer el ejercicio? ;D

Yo lo estaba haciendo, pero para que fuera más entretenido estaba creando una aplicación (C#) por línea de comandos que pudiese generar un PNG con el triángulo y sus datos, y que fuera lanzada desde el py :xD

Citar
He visto en la web de Python, un módulo para lo de fibonacci.
http://docs.python.org/tutorial/modules.html

Puede ser, pero es que estar buscando un módulo para algo que no plantea problemas, mejor hacer el nuestro :-\ , igual he visto modulos "menos necesarios" :P

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 5 Enero 2010, 04:35 am


  Yo mañana lo haré, ahora me iré a dormir..., creo que lo de los ángulos, no es exactamente necesario, pero igual sí puede complementar con algo, no lo sé.


  Saludos.

  Por cierto, creo que hay una librería VPython para figuras en 3D, yo había copiado un código de un cubo verde, no sé si está bien, ya que no lo he probado, ( no conseguí poner bien la librería y me dio pereza  :P )
 
 Code, cubo verde:

 
Código:
 import visual
p = visual.vector (5,4,-1)
s = (4,4,4)
c = color=visual.color.red
cubo = visual.box(pos=p,size=s,color=c)


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 5 Enero 2010, 04:38 am
Aqui esta  ::) Me hubiese gustado poder comprobar tambien si el triangulo segun las medidas de los lados y los angulos era posible o se cortaban pero eso para otro dia, que si no tendreis que buscar un triangulo real para ver si funciona. :laugh:
Código
  1. class triangul():
  2. def __init__(self,hipotenusa,catetoc,catetoo,anguloa,angulob,):
  3. self.hipotenusa = hipotenusa
  4. self.catetoc = catetoc
  5. self.catetoo = catetoo
  6. self.anguloa = anguloa
  7. self.angulob = angulob
  8. def comprobar(self):
  9. if self.anguloa+self.angulob != 90:
  10. return False
  11. elif self.hipotenusa < self.catetoc or self.hipotenusa < self.catetoo:
  12. return False
  13. return True
  14. def sen(self):
  15. return self.catetoo/self.hipotenusa
  16. def cos(self):
  17. return self.catetoc/self.hipotenusa
  18. def tan(self):
  19. return self.catetoo/self.catetoc
  20.  
  21. def datos():
  22. try:
  23. hipo = float(raw_input("Ingresa la hipotenusa:  "))
  24. catec = float(raw_input("Ingresa el cateto continuo:  "))
  25. cateo = float(raw_input("Ingresa el cateto opuesto:  "))
  26. anga = float(raw_input("Ingresa el angulo entre hipotenusa y cateto opuesto:  "))
  27. angb = float(raw_input("Ingresa el angulo entre hipotenusa y cateto continuo:  "))
  28.   except:
  29. print "Eso no es un numero"
  30. datos()
  31. return  triangul(hipo,catec,cateo,anga,angb)
  32.  
  33. triangulo = datos()
  34. if not triangulo.comprobar():
  35. print "Ese triangulo no existe"
  36. else:
  37. print "El seno es:",triangulo.sen()
  38. print "El coseno es:",triangulo.cos()
  39. print "La tangente es:",triangulo.tan()
  40.  

Que alguien le de el visto bueno y planteo la siguiente pregunta. Hasta entonces tratare de ver como podria hacer lo de dibujarlo xD

MODIFICO: Me voy a dormir asi que dejo el ejercicio por si acaso, si lo dais por bueno pues a resolver si no ya sabeis lo que planteare si acierto otro xD

- Modificar el ejercicio de exportar el listado del directorio a un archivo de texto, para convertirlo en un servidor que cuando reciba cierta orden mande "el contenido del txt" al cliente.
-Solo se pide el Servidor el cliente no hace falta postearlo. De todos modos si alguien lo quiere postear tambien ningun problema.
-En un principio puse mandar el .txt pero con que el cliente reciba el contenido de este el ejercicio ya se dara por resuelto.


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 6 Enero 2010, 22:54 pm
Código
  1. import socket,os
  2. s = socket.socket()
  3. s.bind(('localhost',6510))
  4. s.listen(1)
  5. cliente,puerto = s.accept()
  6. while 1:
  7.  if cliente.recv(4096)=="ls\n":
  8.    cliente.send("\n".join(os.listdir(os.getcwd())))
  9.  if cliente.recv(4096)=="exit\n":
  10.    cliente.close()
  11.    s.close()
  12.    exit()
  13.  
Funciona si usas netcat como cliente.
Mi ejercicio va a ser ... un programa, al que tu le des una página y te descargue el contenido, una vez ahí tu le puedes preguntar por una etiqueta y el programa te dirá todas las veces que sale y que atributos tienen.
Es un poco mas difícil.


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 7 Enero 2010, 00:27 am
Código
  1. import urllib2
  2. def web():
  3. url ="http://www."+raw_input("introduce la web (ej:google.com):  ")
  4. f = urllib2.urlopen(url)
  5. return f.read()
  6.  
  7. x = web()
  8. y = raw_input("etiqueta ha encontrar (ej:<div>):  ")
  9. pos1 = 0
  10. pos2 = 0
  11. indice = 0
  12. while True:
  13. pos1 = x.find(y[0:len(y)-1],pos2)
  14. pos2 = x.find(">",pos1)
  15. if pos1 == -1:
  16. break
  17. else:
  18. print "Encontrada con atributo: ",x[pos1:pos2+1]
  19. indice+=1
  20. print "se han encontrado %d etiquetas %s" % (indice,y)
  21.  

Pongo tambien la salida:

Código:
Masita@Hartigan Documentos]$ python web.py
introduce la web (ej:google.com):  elhacker.net
etiqueta ha encontrar (ej:<div>):  <div>
Encontrada con atributo:  <div id="page_margins">
Encontrada con atributo:  <div id="topnav">
Encontrada con atributo:  <div id="header">
Encontrada con atributo:  <div id="data">
Encontrada con atributo:  <div id="main">
Encontrada con atributo:  <div id="col1">
Encontrada con atributo:  <div id="col1_content" class="clearfix">
Encontrada con atributo:  <div id="elhacker">
Encontrada con atributo:  <div id="submenu1" >
Encontrada con atributo:  <div id="servicios">
Encontrada con atributo:  <div id="submenu2">
Encontrada con atributo:  <div id="downloads">
Encontrada con atributo:  <div id="submenu3">
Encontrada con atributo:  <div id="participa">
Encontrada con atributo:  <div id="submenu4">
Encontrada con atributo:  <div id="col3">
Encontrada con atributo:  <div id="col3_content" class="clearfix">
Encontrada con atributo:  <div align="center">
Encontrada con atributo:  <div align="center" class="style1">
Encontrada con atributo:  <div align="left">
Encontrada con atributo:  <div id="ie_clearing">
se han encontrado 21 etiquetas <div>
[Masita@Hartigan Documentos]$

Supongo que eso son los atributos....

El siguiente ejercicio consiste en pedir un rango de ip's y comprobar si utilizan el servidorweb y version que nosotros le pasemos.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 7 Enero 2010, 12:51 pm
Dejo mi solución para el caso de las etiquetas web utilizando expresiones regulares :P
Código
  1. import urllib.request, re
  2. def webrequest(url):
  3. web = urllib.request.urlopen(url)
  4. return str(web.read())
  5.  
  6. URL = input("Ingrese la url 'completa' de la web: ")
  7. TAG = input("Ingrese etiqueta a buscar: ")
  8.  
  9. r = re.compile(TAG[:-1]+'.*?'+TAG[-1], re.IGNORECASE)
  10. Tags = r.findall(webrequest(URL))
  11.  
  12. for t in Tags:
  13. print("Etiqueta encontrada: "+ t)
  14. print("Se han encontrado " + str(len(Tags)) + " etiquetas")

En Python 3.x se dejó de lado urllib2, por eso el urllib.request

Sobre el último ejercicio ... sería consultar un rango de IP's y ver si tienen un servidor web corriendo y su versión?

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 7 Enero 2010, 17:04 pm
Si Novlucker seria exactamente eso. Yo ya lo termine pero me llevo mas de un quebradero de cabeza la parte que genera el rango de ip's.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 7 Enero 2010, 17:10 pm
Nueva consulta ... el rango de IP que formato lleva?
Cualquiera de estos?

Citar
127.0.0.1/127.0.0.255
127.0.0.1/127.120.250.255
127.0.0.1/64
127.0.0.1/255.255
127.0.0.1/127.0.1.255

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 7 Enero 2010, 17:14 pm
En mi caso ingreso primero una de las ip en este formato 127.0.0.1  y despues pido la siguiente con el mismo formato. Por ejemplo 128.0.0.1 ( lo unico es que con este rango tardaria eones en terminar el scaneo ) Tu utiliza el formato que desees.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 7 Enero 2010, 23:41 pm
El ejercicio anterior :P

Código
  1. import http.client
  2.  
  3. def NextIP(rango):
  4.            rango = rango.split('.')
  5.            for i in range(len(rango)-1,-1,-1):
  6.                        if(int(rango[i]) < 255):
  7.                                   rango[i] = str(int(rango[i]) + 1)
  8.                                   break
  9.                        else:
  10.                                   rango[i] = '0'
  11.            return '.'.join(rango)
  12.  
  13. def ServerinIPRange(strRange):
  14.            RIPs = strRange.split('/')
  15.            sIPstr = RIPs[0]
  16.            eIP = RIPs[1].split('.')
  17.            eIP = sIPstr.split('.')[:-len(eIP)] + eIP
  18.            eIPstr = '.'.join(eIP)
  19.            ShoWebServer(sIPstr)
  20.            while(sIPstr != eIPstr):
  21.                        sIPstr  = NextIP(sIPstr)
  22.                        ShoWebServer(sIPstr)
  23.  
  24. def ShoWebServer(URLIP):
  25.            try:
  26.                        conn = http.client.HTTPConnection(URLIP,timeout=5)
  27.                        conn.request("GET", "/index.html")
  28.                        r = conn.getresponse()
  29.                        print(URLIP,r.getheader('Server'))
  30.            except:
  31.                        print(URLIP,'Server not found')
  32.            finally:
  33.                        conn.close()
  34.  
  35. try:
  36.    iprange = input("Ingrese un rago de IP (ej: 200.3.25.1/26.255): ")
  37.    ServerinIPRange(iprange)
  38. except:
  39.    print("El rango de IP ingresado no es válido")

Para quienes usan Python 2.6 hay que modificar el script, ya que la librería a importar es la httplib

Una muestra de la salida:
Citar
>>>
Ingrese un rago de IP (ej: 200.3.25.1/200.3.25.255): 207.46.192.250/193.1
207.46.192.250 Server not found
207.46.192.251 Server not found
207.46.192.252 Server not found
207.46.192.253 Microsoft-IIS/7.5
207.46.192.254 Microsoft-IIS/7.5
207.46.192.255 Server not found
207.46.193.0 Server not found
207.46.193.1 Server not found
>>>


Tener en cuenta que el script tiene configurado un timeout de 5 segundos (tiempo que demora en "decidir" si un host es inaccesible o no), y que no se verifica que el rango hasta sea mayor que el inicio, por lo que si nos equivocamos queda en un bucle infinito :silbar:

Ultima nota: los headers que muestra el servidor se pueden modificar, así que no es raro ver algunos extraños, como el gws  para google

Saludos

[Edito]
Le bajé el timeout de 10 a 5 segundos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 8 Enero 2010, 00:02 am
 ;-) Cada vez que veo uno de tus codigos me doy cuenta de todo lo que falta por aprender.... Aqui dejo lo que habia conseguido hacer yo. Es bastante menos legible y muchisimo mas largo xDD

Código
  1. import socket
  2. def rango(): #Recoge el rango de ip
  3. while True:
  4. a = (raw_input("introduzca primera ip:  "))
  5. b = (raw_input("introduzca segunda ip:  "))
  6. c=b
  7. a, b = a.replace("."," "), b.replace("."," ")
  8. try:
  9. int(a.replace(" ",""))
  10. int(b.replace(" ",""))
  11.  
  12. a, b = a.split(), b.split()
  13. return a,b,c
  14. except:
  15. print "El rango ip introducido no es valido"
  16. def listaip(): #Genera una lista con todas las ip en el rango
  17. aux=[]
  18. ip = []
  19. a, b, c = rango()
  20. a1, a2, a3, a4 = int(a[0]), int(a[1]), int(a[2]), int(a[3])
  21. b1, b2, b3, b4 = int(b[0]), int(b[1]), int(b[2]), int(b[3])
  22. while True:
  23. while a1 != 255:
  24. while a2 != 255:
  25. while a3 != 255:
  26. while a4 != 255:
  27. aux=[]
  28. aux.append(str(a1))
  29. aux.append(str(a2))
  30. aux.append(str(a3))
  31. aux.append(str(a4))
  32. aux = (".".join(aux))
  33. ip.append(aux)
  34. a4 +=1
  35. if aux == c:
  36. return ip
  37. aux=[]
  38. aux.append(str(a1))
  39. aux.append(str(a2))
  40. aux.append(str(a3))
  41. aux.append(str(a4))
  42. aux = (".".join(aux))
  43. ip.append(aux)
  44. a4 = 0
  45. a3 +=1
  46. if aux == c:
  47. return ip
  48. aux=[]
  49.  
  50. aux.append(str(a1))
  51. aux.append(str(a2))
  52. aux.append(str(a3))
  53. aux.append(str(a4))
  54. aux = (".".join(aux))
  55. ip.append(aux)
  56. a4 = 0
  57. a3 = 0
  58. a2 +=1
  59. if aux == c:
  60. return ip
  61. aux=[]
  62. aux.append(str(a1))
  63. aux.append(str(a2))
  64. aux.append(str(a3))
  65. aux.append(str(a4))
  66. aux = (".".join(aux))
  67. ip.append(aux)
  68. a4 = 0
  69. a3 = 0
  70. a2 = 0
  71. a1 +=1
  72. if aux == c:
  73. return ip
  74. def soc(host):
  75. try:
  76. s=socket.socket()
  77. s.settimeout(0.1)
  78. s.connect((host,80))
  79. s.send("HEAD / HTTP/1.1\n\n")
  80. f=s.recv(3000)
  81. s.close()
  82. return f
  83. except:
  84. return False
  85. def comparar(cabecera,servidor):
  86. x = cabecera.find(servidor)
  87. if x != -1:
  88. return True
  89. else:
  90. return False
  91. def gen(ips):
  92. coincidencias = []
  93. indice = 0
  94. for i in ips:
  95. try:
  96. y = soc(i)
  97. if comparar(y,x):
  98. print "Servidor encontrado en: ", i
  99. coincidencias.append(i)
  100. indice +=1
  101. else:
  102. print i
  103. except:
  104. print "Ningun servidor web en: ", i
  105. continue
  106. return coincidencias
  107. #Main
  108. print "######################################"
  109. print "  Buscador de cadenas en headers http"
  110. print "######################################\n"
  111. x = raw_input("Introduzca el servidor a buscar:"  )
  112. ips = listaip()
  113. print "Empezando escaneo"
  114. coin = gen(ips)
  115. print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
  116. print "Un total de %d servidores detectados: " % (len(coin))
  117. for i in coin:
  118. print "Servidor encontrado en: ", i
  119.  

Y su salida

Código:
[Masita@Hartigan Documentos]$ python ip.py
######################################
  Buscador de cadenas en headers http
######################################

Introduzca el servidor a buscar:Apache/2.2.13
introduzca primera ip:  212.92.50.9
introduzca segunda ip:  212.92.50.18
Empezando escaneo
Servidor encontrado en:  212.92.50.9
212.92.50.10
212.92.50.11
Ningun servidor web en:  212.92.50.12
.....
.....
Un total de 1 servidores detectados:
Servidor encontrado en:  212.92.50.9

Siguiente ejercicio!


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 8 Enero 2010, 00:17 am
Aaaah, había que ingresar además el tipo de servidor :P

Igual esta muy bien, yo también inicie con los muchos while e if, pero luego encontre la manera de optimizarlo.

En principio también me había planteado retornar una lista con las IP dentro del rango, tal y como hace tu función rango(), pero luego lo deje de lado porque si se ingresa un rango demasiado extenso entonces se carga mucho en memoria, aunque hacer eso es lo mejor y más "correcto", porque de ese modo se separa realmente las dos funciones y se pueden reutilizar mejor a la hora de pasarlas a otro code, pero bueno, eso se cambia con solo agregar una lista y cambiar el return ;D

Debo de decir que también había comenzado el script con sockets, pero luego recorde las otras librerías, que de por si tienen funciones para retornar los headers.

En resumen, bien hecho! ;)

Voy a ver que planteo para el siguiente ejercicio ....


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 8 Enero 2010, 01:01 am
Lo del socket lo intente primero busque si se podia hacer con urllib, pero como no me aceptaba ip's decidi hacerle la peticion de forma manual. Buscare info sobre esas librerias por que sabia que existian pero no se me ocurrio usarlas.

Gracias por la valoracion  ;D


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 8 Enero 2010, 02:13 am
Ahora si ;D

Es relativamente sencillo, para que quienes no han podido con estos, intenten con este otro ..

"Crear un script por medio del cual:
  • El usuario ingrese el nombre de una imagen
  • Se busque imagenes en google según lo ingresado por el usuario
  • Se descargue todos los thumbnails que aparecen en la primera página de coincidencias a un directorio por defecto (a criterio del programador)"
Ej de búsqueda:
google.es ---> http://images.google.es/images?hl=es&source=hp&q=elhacker.net&um=1&ie=UTF-8&sa=N&tab=wi&gbv=1&ei=_4VGS_vpJ8yVtgefnqHwAQ (url ejemplo con imagenes). Se deben de almacenar esas imagenes pequeñas.

[Edito]
Por como muestra los resultados google, con que sean 10 imagenes descargadas alcanza :P

Saludos



Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 8 Enero 2010, 06:03 am
-


  No sé si funcionará porque no tengo el intérprete para probarlo, y hasta hoy por la noche creo que no podré entrar de nuevo.

   Me basé en algo que ví en una web, así que no estoy 100% seguro.

Código
  1. import httplib
  2. a = "www.google.es"
  3. part1 = "/images?gbv=2&hl=en&sa=1&q="
  4. part2 = "&btnG=Search&aq=f&oq=&start=0"
  5. b = raw_input("Fotos a buscar: ")
  6. c = part1+b+part2
  7.  
  8. conexion = httplib.HTTPConnection(a)
  9. conexion.request ("GET", c)
  10. d = conexion.getresponse()
  11. directorio = file( "C:\Python", "wb" )
  12. directorio.write(d.read())
  13. directorio.close()
  14.  
   
  EDITO:

 No funciona, al final fui a clase y me echaron porque está nevando, ( que suerte  :P ) , así que puedo conectarme, voy a intentar el code..  ;D ;D ;D.


   Saludos.







Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 8 Enero 2010, 13:56 pm
Me cachis!  >:(

No hay manera de que me tire lo que busco! pensé que quizás google había cambiado la manera en la que muestra resultados (y no eran accesibles), pero acabo de probar con otro lenguaje (vbs) y no tengo problemas en listar las imagenes!, pero en este caso, ponga lo que le ponga (cambiando user-agent y demás) me sigue pateando con un error 403!

Arghhhhh  >:(


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 8 Enero 2010, 16:42 pm
Yo estoy fuera todo el finde asi que me imagino que cuando vuelva ya estara resuelto. Aunque cuando vuelva lo intento que me parece bastante interesante.


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 8 Enero 2010, 17:02 pm
Me cachis!  >:(

No hay manera de que me tire lo que busco! pensé que quizás google había cambiado la manera en la que muestra resultados (y no eran accesibles), pero acabo de probar con otro lenguaje (vbs) y no tengo problemas en listar las imagenes!, pero en este caso, ponga lo que le ponga (cambiando user-agent y demás) me sigue pateando con un error 403!

Arghhhhh  >:(

  Yo seguiré intentando a ver....,  creo que  será con el módulo urllib ¿?,  lol como mola este emoticono --->  >:( >:(


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 8 Enero 2010, 17:04 pm
Yo me pondré a intentarlo esta noche  >:( >:( >:( es verdad, si que mola.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 8 Enero 2010, 17:23 pm
jaja, ya lo tengo terminado, el problema era que estaba generando mal la consulta con urllib, lo raro es que si bien estaba pasando parámetros equivocados a la función urlopen no me pateaba eso, sino un error 403 (igual eran dos problemas separados) :P

Otra cosa ... desde ya les digo que deben de cambiar el user-agent al hacer el GET a google, porque el user-agent por defecto de urllib/urllib2 es "Python-urllib/2.6/3.1", y a google no le gusta :silbar:

:http://www.user-agents.org/

[Edito]
Debo de agregar además, que si bien no es "difícil", como que tampoco es muy sencillo para los que comienzan :-X (era mi idea inicial)

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 9 Enero 2010, 05:15 am

 Al hacer urlopen, se supone que copio el source, pero no, copio algo incorrecto :S :S  >:( >:(


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 9 Enero 2010, 13:06 pm
No, al hacer urlopen no te devuelve el source, te devuelve un objeto. Lo que te devuelve el source es el método .read() de ese objeto.
Yo ahora mismo estoy en windows por qué la lié con linux y no voy a poder hacer nada, aunque de todas formas lo acabaré haciendo.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 9 Enero 2010, 15:37 pm
Excusas! Python es multiplataforma!

Por mi parte ya he dejado el script "limpio" para que sea lo más entendible posible, ya que se supone que en parte es la idea.
Una muestra :P

Citar
>>>
Ingrese texto de imagen a buscar: wallpapers

<Descargando 21 imagenes>

d:\Imagenes\wTYjGJHklorkQM.jpg
d:\Imagenes\blgyYUWc_GXkwM.jpg
d:\Imagenes\bP7o0OcpkhzwGM.jpg
d:\Imagenes\JhX_rdRwoYutQM.jpg
d:\Imagenes\_2xbHUMSifRvlM.jpg
d:\Imagenes\GH5IVj4CbxQAPM.jpg
d:\Imagenes\vFHnJs2xnEQLgM.jpg
d:\Imagenes\L1WXw5lr9KzUUM.jpg
d:\Imagenes\oMxwx2Z1q7MczM.jpg
d:\Imagenes\V5Tljp9ZSPtkuM.jpg
d:\Imagenes\zAkTCWgWmekv_M.jpg
d:\Imagenes\sTiDwmbusPnl7M.jpg
d:\Imagenes\0TYaokqa7NNs3M.jpg
d:\Imagenes\E6ydly-vf7rfLM.jpg
d:\Imagenes\dsIX0BzhiIz0fM.jpg
d:\Imagenes\9bMAGXCe0sNW9M.jpg
d:\Imagenes\kf4KrWAu-9gBpM.jpg
d:\Imagenes\LElXIbJfFGDcVM.jpg
d:\Imagenes\EaFnBmtX1b7JTM.jpg
d:\Imagenes\gxZPznPGLgKQHM.jpg
d:\Imagenes\oa2kPZFNCiaf-M.jpg

<Completado>
>>>

(http://s3.subirimagenes.com:81/imagen/previo/thump_3857541wall.png) (http://www.subirimagenes.com/imagen-wall-3857541.html)

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 10 Enero 2010, 17:01 pm
Yo lo empiezo ahora, en media hora espero tenerlo hecho.


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 10 Enero 2010, 19:11 pm
Aqui está el código para python 3.1
Código
  1. import urllib.request,re
  2. import urllib.request,re
  3. def extension(url):
  4.    url = url[::-1]
  5.    extension = url[:4]
  6.    return extension[::-1]
  7. palabra = input("Introduzca la palabra de la busqueda : ").replace(' ','%20')
  8. numerodefotos = int(input("Cuantas fotos quieres ? : "))
  9. partedelhost = "http://www.google.es"
  10. parte1 = "/images?gbv=2&hl=en&sa=1&q="
  11. parte2 = "&btnG=Search&aq=f&oq=&start=0"
  12. url = partedelhost+parte1+palabra+parte2
  13. diccionario = { "User-Agent" : "Mozilla Firefox"}
  14. req = urllib.request.Request(url,headers=diccionario)
  15. codigo = urllib.request.urlopen(req).read()
  16. expresionre =  re.compile('http://[^/]*?gstatic.com/images.*? ', re.IGNORECASE)
  17. listadefotos = expresionre.findall(str(codigo))
  18. for i in range(numerodefotos):
  19.    urllib.request.urlretrieve(listadefotos[i],str(i)+"."+extension(listadefotos[i]))
  20. print("Todo hecho")
  21.  
El ejercicio va a ser un programa para jugar online al 3 en raya, tenéis que hacer el cliente y el server.
Suerte.
  


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 10 Enero 2010, 21:26 pm
Bien hecho!

Dejo mi code, tiene comprobación de errores en algún sitio, además de que lo he hecho bastante estructurado, por lo que el código es el doble de largo :P

Código
  1. import urllib.request, urllib.parse, re
  2.  
  3. def Download(URL, name):
  4.        try:
  5.                webretrieve = urllib.request.urlretrieve(URL, name)
  6.                return webretrieve[0]
  7.        except:
  8.                return 'Error en la descarga'
  9.  
  10. def ArrayFilter(aList):
  11.        newList = []
  12.        for a in aList:
  13.                if a not in newList:
  14.                        newList.append(a)
  15.        return newList
  16.  
  17. def Searchths(text):
  18.        r = re.compile('[a-zA-Z0-9_-]{13}M:')
  19.        IDsths = r.findall(text)
  20.        return IDsths
  21.  
  22. def Webrequest(URL, params):
  23.        Headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
  24.        p = urllib.parse.urlencode(params)
  25.        URL += p
  26.        customrequest = urllib.request.Request(URL,headers=Headers)
  27.        webcontent = urllib.request.urlopen(customrequest)
  28.        return str(webcontent.read())
  29.  
  30. def SeDoGoImage(imagetext):
  31.        searchurl = 'http://images.google.es/images?'
  32.        imagesurl = 'http://t1.gstatic.com/images?q=tbn:'
  33.  
  34.        Wrtext = Webrequest(searchurl,{'q':imagetext})
  35.        aImages = ArrayFilter(Searchths(Wrtext))
  36.        print('\n<Descargando',len(aImages),'imagenes>\n')
  37.        for i in aImages:
  38.                d = Download(imagesurl + i[:-1],'d:\\Imagenes\\' + i[:-1] + '.jpg')
  39.                print(d)
  40.        print('\n<Completado>')
  41.  
  42. IMG = input('Ingrese texto de imagen a buscar: ')
  43. SeDoGoImage(IMG)

El ejercicio que planteas sería para jugar contra la máquina verdad?

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 10 Enero 2010, 21:52 pm
Bueno, yo lo pensé para jugador contra jugador, pero hagan lo que quieran.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 10 Enero 2010, 22:02 pm
Es que no he hecho nada de ese tipo :silbar:

Entonces sería Usuario (Cliente) <---> Servidor <---> Usuario (Cliente), con el servidor recibiendo y enviando comunicación a ambos lados?

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 10 Enero 2010, 22:52 pm
Exáctamente.


Título: Re: Juego ejercicios [Python]
Publicado por: ^Tifa^ en 11 Enero 2010, 00:09 am
Pues nada escanear servidores web con puerto 80 mediante 1 rango de IP estaticas.

Código
  1.  
  2. import httplib, socket
  3.  
  4. class Escaneo:
  5.  def __init__(self, parametro):
  6.    self.valor = parametro
  7.  
  8.  def Scan(self):
  9.    try:
  10.      for b in range(len(self.valor)):
  11. connecion = httplib.HTTPConnection(self.valor[b], 80, timeout=2)
  12. connecion.request("GET", "/index.html")
  13. r = connecion.getresponse()
  14. print(self.valor[b],r.getheader('Server'))
  15.  
  16.    except Exception:
  17. print("No existe el servidor :: ", self.valor[b])
  18.    finally:
  19. connecion.close()
  20.  
  21. class Validacion:
  22.  def Valida(self, parametro1):
  23.    param1 = parametro1.split('/')
  24.  
  25.    for a in range(len(param1)):
  26.      try:
  27. socket.inet_aton(param1[a])
  28. Objecto1 = Escaneo(param1)
  29. Objecto1.Scan()
  30.  
  31.      except socket.error:
  32. print("Rango de IP insertado es Incorrecto :: ", param1[a])
  33.  
  34. ip=raw_input("Inserta rango de IP ex:( 200.55.4.1/190.4 ) ::  ")
  35. Objeto = Validacion()
  36. Objeto.Valida(ip)
  37.  

Citar
bash-3.1$ python perla.py
Inserta rango de IP ex:( 200.55.4.1/190.4 ) ::  127.0.0.1/190.56.7.8/19c.56.7.1
('127.0.0.1', 'Apache/2.2.13 (Unix) DAV/2')
('No existe el servidor :: ', '190.56.7.8')
('127.0.0.1', 'Apache/2.2.13 (Unix) DAV/2')
('No existe el servidor :: ', '190.56.7.8')
('Rango de IP insertado es Incorrecto :: ', '19c.56.7.1')


No tengo cabeza para los numeros... si idealizan algo que no incluya numeros estare mas feliz


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 11 Enero 2010, 05:14 am
No tengo cabeza para los numeros... si idealizan algo que no incluya numeros estare mas feliz

Que sugieres ^TiFa^? XD

braulio23, no me había puesto a pensar muy bien en el ejercicio que planteabas, y ahora que lo he hecho me doy cuenta de que no es de lo que se pueda decir, "sencillo", así que la mayoría de los que inicia la tiene algo complicada :-\

Por mi parte, al igual que en casi todos los lenguajes uno no conoce bien las cosas hasta bien no se presenta la oportunidad de hacerlas, así que como no me había planteado hacer eso en python, ahora estoy investigando un poco sobre los diferentes métodos (la parte del juego ya esta) para tratar la conexión desde el servidor, dado que son dos clientes que se conectan a un "intermediario" ,cual será la mejor opción? mantener una sola conexión intercambiando los clientes? multithreading? asyncore? Ya veré ....

En cuanto pueda revisarlo bien, me pongo en ello :P

Decidido, voy a implementar el método "feo" y rápido, while en cliente(s) y servidor. El servidor recibe conexión y responde con la tabla, espera ingreso del cliente, acepta ingreso, modifica la tabla y corta conexión con cliente, responde al otro cliente y vuelve a comenzar.
No me gusta para nada, pero creo que en este caso no da para complicarse más, esta claro que es solo para pasar el rato y nadie lo va a usar :-X

Saludos
 


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 11 Enero 2010, 14:39 pm

  Yo hace unos días había hecho algo parecido, por ejemplo cuando un cliente dijese corto, pues pasaba al otro, se cambiaban de turno, pero pensé que se podían conectar ambos a la vez.

  Saludos.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 11 Enero 2010, 15:49 pm
Threading/Hilos :P

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 11 Enero 2010, 17:49 pm
Yo no veo que haya que usar hilos ni nada de eso :
Un cliente se conecta al server y espera el otro.
Cuando el server detecta que se ha conectado el otro dice que van a empezar.
El server espera la entrada del usuario que le toque y el otro cliente espera que el server le mande informacion.
Y así cambiando de usuario.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 11 Enero 2010, 18:06 pm
Mira la última parte de mi post anterior .. el de "[...]decidido...", es lo que he dicho, hay que conectar y desconectar de un cliente y otro intercambiando clientes (para no "complicarse" con más code), o hablas de tener conectados en simultaneo dos clientes en el mismo puerto del servidor :huh:


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 11 Enero 2010, 18:15 pm
Claro, fácilmente se pueden conectar al mismo puerto y manejarlos por separado.
Lo que devuelve el método .accept() del server es una tupla con el manejador socket del cliente al que puedes mandar datos y también recibirlos (si te los envía) y el puerto por el que se ha conectado (que esto tampoco es muy útil.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 11 Enero 2010, 18:46 pm
Jaaaaaaaaaa! Nada nada! pequeño desliz :-X

Nunca has hecho una pregunta que pueda decirse tonta (estupida)?
El valor que se le pasa al listen() pa' que es entonces? XD

En ocasiones hay que plantearse lo rápido que se es frente al teclado, al punto de que las neuronas no razonan tan rápido como se mueven los dedos. XDD

Lo dicho, olvidalo ;D


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 11 Enero 2010, 18:47 pm
:xD Me pasa mas de lo que debería :xD


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 11 Enero 2010, 20:13 pm
Ya estoy de vuelta. Veo que la cosa ha avanzado bastante, esta misma noche me pongo con ello!!!


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 12 Enero 2010, 13:20 pm
La verdad que el crear juegos no me gusta nada, pero bueno, para que haya otro ejercicio más rápido XD

Servidor:
Código
  1. import socket
  2. import random
  3. import time
  4. from time import localtime, strftime
  5.  
  6. class TresRaya():
  7.    def __init__(self):
  8.        self.player1 = ''
  9.        self.player2 = ''
  10.  
  11.    def Agregar(self,value, player):
  12.        try:
  13.            if(int(value) in range(1,10)):
  14.                if(value not in (self.player1+self.player2)):
  15.                    if(player==1):
  16.                        self.player1 += value
  17.                    else:
  18.                        self.player2 += value
  19.                    return 'True'
  20.                else:
  21.                    return 'El casillero ya se encuentra ocupado'
  22.            else:
  23.                return 'El casillero seleccionado no es válido'
  24.        except:
  25.                return 'El casillero seleccionado no es válido'
  26.  
  27.    def Dibujar(self):
  28.        total = self.player1+self.player2
  29.        t = '\n ___  ___  ___  \n'
  30.        tablero = ['' for x in range(12)]
  31.        for i in range(10):
  32.            if (str(i) in self.player1):
  33.                tablero[i-1] = '|_X_|'
  34.            elif (str(i) in self.player2):
  35.                tablero[i-1] = '|_0_|'
  36.            else:
  37.                tablero[i-1] = '|___|'
  38.        rd = t+''.join(tablero[6:9])+'\n'+''.join(tablero[3:6])+'\n'+''.join(tablero[0:3])+'\n'
  39.        return rd
  40.  
  41.    def VerificaGanador(self, player):
  42.        soluciones = ['123','456','789','147','258','369','159','357']
  43.        gana = ''
  44.        if(player==1):
  45.            gana = self.player1
  46.        else:
  47.            gana = self.player2
  48.  
  49.        for s in soluciones:
  50.            if((s[0] in gana) and (s[1] in gana) and (s[2] in gana)):
  51.                return 1
  52.        if(len(self.player1+self.player2) == 9):
  53.            return 0
  54.        return -1
  55.  
  56. Tr = TresRaya()
  57. s = socket.socket()
  58. s.bind(('localhost',19911))
  59. s.listen(2)
  60. socket_c1,addr1 = s.accept()
  61. print(time.strftime("%d/%m/%y %H:%M:%S:",time.localtime()),'Conexion desde',addr1)
  62. socket_c2,addr2 = s.accept()
  63. print(time.strftime("%d/%m/%y %H:%M:%S:",time.localtime()),'Conexion desde',addr2)
  64.  
  65. f = random.randrange(1,3)
  66. p = 1
  67.  
  68. if (f == 2):
  69.    p = 2
  70.  
  71. while(True):
  72.    if(p == 1):
  73.        socket_c1.send(Tr.Dibujar().encode()+'\n-- PLAYER ONE [X]--\n'.encode())
  74.        time.sleep(1)
  75.        socket_c1.send('Juega'.encode())
  76.        play = socket_c1.recv(100).decode()
  77.    else:
  78.        socket_c2.send(Tr.Dibujar().encode()+'\n-- PLAYER TWO [0]--\n'.encode())
  79.        time.sleep(1)
  80.        socket_c2.send('Juega'.encode())
  81.        play = socket_c2.recv(100).decode()
  82.  
  83.    if(play=='exit'):
  84.        if(p == 1):
  85.            socket_c2.send('Juego Terminado por el otro jugador'.encode())
  86.        else:
  87.            socket_c1.send('Juego Terminado por el otro jugador'.encode())
  88.        time.sleep(2)
  89.        socket_c2.close()
  90.        socket_c1.close()
  91.        break
  92.  
  93.    Agrego = Tr.Agregar(play,p)
  94.    if(Agrego == 'True'):
  95.        win = ''
  96.        whowin = Tr.VerificaGanador(p)
  97.        if(whowin == 1):
  98.            win = '\n\n\n-- Gana PLAYER' + str(p) + ' --'
  99.        elif(whowin == 0):
  100.            win = '\n\n\n-- EMPATE --'
  101.        if(whowin == 1 or whowin == 0):
  102.            socket_c1.send(win.encode())
  103.            time.sleep(2)
  104.            socket_c1.send('Juego Terminado'.encode())
  105.            socket_c2.send(win.encode())
  106.            time.sleep(2)
  107.            socket_c2.send('Juego Terminado'.encode())
  108.            time.sleep(2)
  109.            socket_c2.close()
  110.            socket_c1.close()
  111.            break
  112.        if(p == 1):
  113.            p = 2
  114.        else:
  115.            p = 1
  116.    else:
  117.        if(p == 1):
  118.            socket_c1.send(Agrego.encode())
  119.            time.sleep(1)
  120.        else:
  121.            socket_c2.send(Agrego.encode())
  122.            time.sleep(1)
  123.  
  124. print(time.strftime("%d/%m/%y %H:%M:%S:",time.localtime()), 'Juego Terminado')
  125. s.close()

Cliente:
Código
  1. import socket
  2.  
  3. s = socket.socket()
  4. s.connect(('localhost',19911))
  5.  
  6. while(True):
  7.    data = s.recv(100).decode()
  8.    if(data == 'Juego Terminado' or data == 'Juego Terminado por el otro jugador'):
  9.        break
  10.    elif(data == 'Juega'):
  11.        casillero = input('\nIngresa numero de casillero [1-9]: ')
  12.        s.send(casillero.encode())
  13.        if(casillero == 'exit'):
  14.            s.close()
  15.            break
  16.    elif(data != '' and data != 'Juega'):
  17.        print(data)

Seguro que no es para nada la mejor manera, pero quería terminarlo ya! XD


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 12 Enero 2010, 13:23 pm
Y así se ve en el servidor y uno de los clientes (con errores de ingreso) :P

Código:
D:\Py>python.exe Cliente3raya.py
 ___ ___ ___
|___||___||___|
|___||___||___|
|___||___||___|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 1
 ___ ___ ___
|___||___||___|
|___||___||___|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 5
 ___ ___ ___
|___||___||___|
|___||_X_||_0_|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: o
El casillero seleccionado no es váli
 ___ ___ ___
|___||___||___|
|___||_X_||_0_|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 6
El casillero ya se encuentra ocupado
 ___ ___ ___
|___||___||___|
|___||_X_||_0_|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 9


-- Gana PLAYER1 --

D:\Py>

Código:
D:\Py>python.exe Servidor3raya.py
12/01/10 13:12:41: Conexion desde ('127.0.0.1', 1455)
12/01/10 13:13:39: Conexion desde ('127.0.0.1', 1456)
12/01/10 13:14:38: Juego Terminado

D:\Py>

Como puede verse, el tablero se actualiza solo cuando "te vuelve el foco", así que cuando envías la jugada debes de esperar a que te toque otra vez para que se actualice.
En realidad no se por que hice esto así, solo debeía de agregar otro llamado a TresRayas.dibujar() :xD

Supongo que con esto esta ok, así que voy pensando en un nuevo ejercicio :P

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: braulio-- en 12 Enero 2010, 14:44 pm
Vale, lo espero.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 12 Enero 2010, 15:45 pm
El siguiente es sencillo :P

"Crear un programa que abra un archivo binario y 'extraíga' todo aquello que pueda significar texto"

El mejor ejemplo de esto es strings de Sysinternals (http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx) (la salida no debe de ser tal cual ese programa, sino que tiene que ser dentro de todo, 'legible')

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 14 Enero 2010, 02:03 am
Supongo que lo que pides es eliminar los caracteres extraños.

Código
  1. def filtro(x):
  2. f = open(x)
  3. cadena = f.read()
  4. for i in range(len(cadena)):
  5. x = False
  6. for j in range(65,91):
  7. if cadena[i] == chr(j):
  8. x = True
  9. for j in range(97,123):
  10. if cadena[i] == chr(j):
  11. x = True
  12. for j in range(48,58):
  13. if cadena[i] == chr(j):
  14. x = True
  15. if x == False:
  16. cadena = cadena.replace(cadena[i]," ")
  17. return cadena
  18.  
  19. binario = raw_input("Ingrese el nombre del archivo: ")
  20. try:
  21. cadena = filtro(binario)
  22. cadena = cadena.split()
  23. cadena = "  ".join(cadena)
  24. print  cadena.upper()
  25. except:
  26. print "Archivo no encontrado"
  27.  

Supongo que es eso lo que pedias dejo mi ejercicio por si es aceptado (me voy ya a la cama...)

El siguiente ejercicio consiste en un programa que al ejecutarlo con este formato: Nombre_del_programa -Accion -Archivo. Ejemplo: python miprograma.py -B foto.jpg

-El programa tiene que permitir: Crear, Borrar, Abrir el archivo que le demos como segundo parametro.

Este tambien es sencillito.


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 14 Enero 2010, 02:13 am
Si pero no, la idea es esa más o menos ...pero eso falla :silbar:
OPEN por defecto abre un archivo en modo texto, y estamos hablando de un binario, intenta por ejemplo abrir el notepad.exe con eso :silbar:

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 14 Enero 2010, 02:15 am
Es que yo lo habia intentado con un gif y un archivo en c compilado, No tengo ningun archivo .exe a mano, uso linux y el wine no me funciona. :rolleyes:

Mañana me bajo cualquier .exe y lo intento!


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 14 Enero 2010, 02:18 am
Igual deberías de haber tenido problemas con el GIF, te dejo trabajar bien? :huh:


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 14 Enero 2010, 02:31 am
Si, no me dio ningun problema. Me solto los mismos resultados que si lo hubiese abierto con un editor de texto (Es decir un monton de simbolos extraños y letras sin sentido.).


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 14 Enero 2010, 03:05 am
No se :-\
Pero hagamos lo siguiente, si en 12 hrs no hay una respuesta mejor lo damos por válido, ¿esta? así no seguimos esperando otro ejercicio :xD
Que ya hasta tengo otro para plantear XD

Saludos

Lo dejamos así entonces y lo damos por bueno, nadie más a podido/querido?

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 15 Enero 2010, 22:27 pm
Código
  1. import sys
  2. import os
  3. a = sys.argv
  4.  
  5.  
  6. b = a[1]
  7.  
  8. c = a[2]
  9. ruta = "C:\\"+c
  10. if b == "-C":
  11.  f = open(ruta, "w")
  12. if b == "-A":
  13.   os.system(ruta)
  14.  
  15. if b == "-B":
  16.  os.remove(ruta)
  17.  


  Para poder guardar,crear,borrar archivo tengo que indicar la ruta, entonces lo puse en C:\, es decir para windows, -A es para abrir, -B  para borrar y -C para crear.

  Para que funcionen los argumentos se deben poner tal cual en mayúsculas.


  EDITO:


  El ejercicio será, un programa que haga un logueo en una web, por ejemplo pongamos que sea hotmail.com y en e-mail escriba por ejemplo: adegegeg  , y  en pass: eerghrh  , y haga un logueo.


Título: Re: Juego ejercicios [Python]
Publicado por: [L]ord [R]NA en 15 Enero 2010, 23:36 pm
Código
  1. import sys
  2. import os
  3. a = sys.argv
  4.  
  5.  
  6. b = a[1]
  7.  
  8. c = a[2]
  9. ruta = "C:\\"+c
  10. if b == "-C":
  11.  f = open(ruta, "w")
  12. if b == "-A":
  13.   os.system(ruta)
  14.  
  15. if b == "-B":
  16.  os.remove(ruta)
  17.  


  Para poder guardar,crear,borrar archivo tengo que indicar la ruta, entonces lo puse en C:\, es decir para windows, -A es para abrir, -B  para borrar y -C para crear.

  Para que funcionen los argumentos se deben poner tal cual en mayúsculas.



El codigo de arriba no tiene que ver nada con el ejercicio anterior propuesto por Novlucker.

NovLucker esperamos el proximo ejercicio...


Edito: Fue una falta de conocimiento de las reglas de mi parte


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 15 Enero 2010, 23:51 pm
R.N.A al final se dio por buena mi solucion, asi que el ejercicio actual era el que estaba propuesto en la respuesta. La respuesta pues de CaronteGold era a mi ejercicio, por lo que es valida y su ejercicio es el siguiente a resolver.

Espero haber aclarado el mal entendido.  :)


Título: Re: Juego ejercicios [Python]
Publicado por: [L]ord [R]NA en 15 Enero 2010, 23:56 pm
R.N.A al final se dio por buena mi solucion, asi que el ejercicio actual era el que estaba propuesto en la respuesta. La respuesta pues de CaronteGold era a mi ejercicio, por lo que es valida y su ejercicio es el siguiente a resolver.

Espero haber aclarado el mal entendido.  :)

:xD no estaba al tanto de eso... esta todo aclarado


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 18 Enero 2010, 12:58 pm
CaronteGold, creo que cuando planteaste el problema no pensaste en la dificultad que podía suponer XD
Puedo logarme casi en cualquier página, pero no en hotmail o gmail por ejemplo :-\ .. de hecho es más sencillo conectarse al pop/smtp de estos, que intentar conectarse vía web :P

vbs XD
Código
  1. set objIE = createobject("internetexplorer.application")
  2. objIE.navigate "http://www.hotmail.com"
  3. objIE.visible = True
  4.  
  5. do while objIE.busy
  6. wscript.sleep 200
  7. loop
  8.  
  9. objIE.document.getelementbyid("login").value = "adegegeg@hotmail.com"
  10. objIE.document.getelementbyid("passwd").value = "eerghrh"
  11. objIE.document.forms(0).submit

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 18 Enero 2010, 14:06 pm
A mi me pasa igual, hotmail envia unas cuantas cosas ademas del login y password. Cada uno de los valores adicionales se genera de una forma.

Hay uno bastante curioso, se trata de una cadena llamada: “IfYouAreReadingThisYouHaveTooMuchFreeTime” a la que le tendriamos que restar tantos caracteres como tiene nuestro password....

En fin que me volvi loco intentando sacar todos los valores.


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 18 Enero 2010, 16:50 pm


  Lo siento  :-X :-X.  Novlucker, me gustaría ver el cógio de Python, para otra web cualquiera, dije Hotmail, por hacerlo en una común y todos igual, pero bueno, se acepta cualquier web, ( como el foro.elhacker.net xD ).


   Saludos.


  ( he empezado a clase y tengo menos tiempo para postear xD )


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 18 Enero 2010, 17:47 pm
El foro tambien manda junto al user y el pass un hash que despues de la que lie para lo de hotmail no me apetece investigar. Te dejo un ejemplo para warzone:

Código
  1. import urllib, urllib2, cookielib
  2. usuario= raw_input("introduce user:  ")
  3. passw= raw_input("introduce pass:  ")
  4. cookie = cookielib.CookieJar()
  5. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
  6. data = urllib.urlencode({"usuario":usuario,"password":passw})
  7. opener.open('http://warzone.elhacker.net/', data)
  8. respuesta = opener.open('http://warzone.elhacker.net/index.php')
  9. print respuesta.read()
  10.  

Novlucker como tu ya posteaste la solucion aunque fue en VBS te cedo el proponer el siguiente ejercicio  :laugh:


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 18 Enero 2010, 18:40 pm
Te quedaste sin ideas XD

"Crear un Web crawler (http://es.wikipedia.org/wiki/Ara%C3%B1a_web) que reciba una URL y un número de 'niveles', y que liste todos los links de esa web, para el número de 'niveles' dado, así como el nivel al que pertenece el link"

Deben de entregarse links NO repetidos y pertenecientes al mismo dominio, ya que al listar links podemos terminar en otra web

Con niveles me refiero a que si voy a www.elhacker.net, como links de nivel 1 tengo por ejemplo; Faq's y Noticias (los links, no el nombre).

Ahora si ingreso a Faq's, tengo los siguientes links, Faq ADSL, Faq News, etc etc, estos son de 'nivel 2', porque llegue a ellos desde los de nivel 1, y así para demás niveles :P

Tener en cuenta además que de no revisar el code podemos terminar en un bucle infinito, por eso lo de links repetidos, porque si tengo un indice e ingreso a uno de sus links, pero en ese link tengo otra para volver al índice, ingresaría a link, luego a índice, y otra vez al link, y otra al índice, etc etc.

Otra cosa, se supone que desde un nivel solo puedes llegar a otro más alto, del 1 al 2, del 2 al 3, nunca del 2 al 1 por ejemplo, ya que se supone que comenzamos suponiendo links de nivel 1, así que cuando estemos en un nivel 2 y listemos sus links, de haber uno de nivel 1, ya lo habremos revisado, y por ende estará repetido :P

Espero no haber confundido mucho XD

Sino cualquier cosa el artículo de la wikipedia debería de aclararlo un poco, y siguiendo con ese mismo, yo ya tengo una 'araña' de tipo ..
Analizar los enlaces de un sitio para buscar links rotos.
Solo que la que tengo recibe una determinada web, busca links de 'descarga' (megaupload, rapidshare, filefactory, etc etc), los lista, y finalmente los revisa en sus resepectivos servidores a ver si siguen disponibles o fueron dados de baja por la razón que fuere ;D

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Novlucker en 25 Enero 2010, 18:19 pm
Más preguntas XD

Ya se aburrieron de Python?
Nadie ha intentado?
Nadie ha podido?
Nadie ha entendido el enunciado?
Damos el tema por muerto?

Creanme que es fácil, Python hasta trae clases que facilitan la tarea a la hora de parsear contenido web :-\

Saludos


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 25 Enero 2010, 19:20 pm
Hice una primera version, pero me daba resultados que no queria asi que habra que refinarla pero ultimamente voy de culo con el tiempo. Mañana si puedo posteo algo.  ;D


Título: Re: Juego ejercicios [Python]
Publicado por: Amerikano|Cls en 25 Enero 2010, 19:46 pm
@Masita: Muy beuno que esten con este tipo de post, por cierto me gustaria robarte la idea y crear otro hilo pero con programacion Java, me permites?  :xD

Salu2


Título: Re: Juego ejercicios [Python]
Publicado por: Masita en 25 Enero 2010, 21:04 pm
Claro que te lo permito, no soy  la SGAE asi que no te cobrare derechos de autor  :xD

Saludos!


Título: Re: Juego ejercicios [Python]
Publicado por: Amerikano|Cls en 25 Enero 2010, 21:13 pm
jeje ta bien solo lo preguntaba para no generar malos pensamientos  ;)


Título: Re: Juego ejercicios [Python]
Publicado por: CaronteGold en 27 Enero 2010, 00:07 am
Más preguntas XD

Ya se aburrieron de Python?
Nadie ha intentado?
Nadie ha podido?
Nadie ha entendido el enunciado?
Damos el tema por muerto?

Creanme que es fácil, Python hasta trae clases que facilitan la tarea a la hora de parsear contenido web :-\

Saludos

  Pues es algo complejo xD, yo lo he intentado el fin de semana, y ahora esta semana entre que tengo un examen de química que si suspendo voy a Septiembre y que ando algo liado metiendo Ubuntu...
 
  Espero que no se borre el post  :P :P, ha tenido mucho éxito.

   Saludos.


Título: Re: Juego ejercicios [Python]
Publicado por: O-LLOS-O en 7 Junio 2010, 11:44 am
Bueno me  he estado revisando el post, y yo hace algun tiempo ya resolvi esto por mi parte, te lo deja todo en un fichero en forma de arbol:


Código
  1. # -*- coding: utf-8 -*-
  2. from httplib import  BadStatusLine, IncompleteRead
  3. import re, urllib2
  4.  
  5. listagen = []
  6. lista = []
  7. lista2 = []
  8. links_Erroneos = []
  9.  
  10. def web(Ruta, ff, x, y):
  11.    listagen.append(Ruta)
  12.    try: HTLM = urllib2.urlopen(Ruta)
  13.    except urllib2.URLError: links_Erroneos.append(Ruta)
  14.    except urllib2.HTTPError: links_Erroneos.append(Ruta)
  15.    except BadStatusLine: links_Erroneos.append(Ruta)
  16.    except IncompleteRead: links_Erroneos.append(Ruta)
  17.    else:
  18.        htlm = ""
  19.        for ele in HTLM: htlm += ele
  20.        f = re.findall("<a href=\"(http://www[a-zA-Z0-9_ \.:]+[\.com|\.es|\.cat|\.edu|\.tv|\.de])\"",htlm)
  21.        cad2 = "   :"
  22.        cad5 = "\n"
  23.        if x == 0: ff.write(Ruta+": \n")
  24.        else: ff.write(cad2*x+cad5+cad2*x+"··"+Ruta+": \n")
  25.        x += 1
  26.        if (x <= y):
  27.            for ele in f:
  28.                if not ele in listagen:
  29.                    lista.append(Ruta)
  30.                    lista2.append(Ruta)
  31.                    web(ele, ff, x,y)
  32.                else:
  33.                    lista2.append(Ruta)
  34.  
  35. y = raw_input("Ingrese una cantidad de niveles, cuidado!! no se pase:")
  36. try: y=int(y)
  37. except ValueError: print "Esto no es un numero!!"
  38. else:
  39. ff = open("http2.txt", "w")
  40. web("http://www.sport.es", ff, 0, y)
  41. ff.close()

Saludos!!



Título: Re: Juego ejercicios [Python]
Publicado por: noodie en 27 Octubre 2010, 21:07 pm
ola a todos
para evitar abrir otro post, os ago mi pregunta aki
ay alguna manera de conseguir que te de los numeros primos en un rango determinado (a,b), que lo meteria el usuario
eske estoy mirando todo tipo de soluciones, pero no encuentro ninguna que se adapte a mis conocimientos de programar en python, soy nuevo asike evtad un lenguaje muy complicado que no lo entendere XD
PD: lo que aora mismo se de esto es: el if, elif,...., funciones (def ....) while, y rangos
PD2: no se como borrar mensajes, puse el segundo mensaje por error, pido disculpas :huh:
ya e conseguido sacar algo, aora el problema que tengo eske me sale esto:
Código:
es primo
2 es primo
3 es primo
5 es primo
y quiero que me salga como si fuera un rango normal, es decir:
Código:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
solo que me salgan solos los primos
otra cosa, cuando ago una prueba, por ejemplo 3 y 8, me dice que 4 es primo, y se pongo 1,8 solo me tiene en cuenta el 1


Título: Re: Juego ejercicios [Python]
Publicado por: noodie en 27 Octubre 2010, 21:10 pm
ola a todos
tengo una pregunta
se puede acer un programa para que el usuario ponga dos numeros (a, b) y que te de todos los numeros primos contendos en ese rango??
eske no e estado mirando muchas soluciones a este tipo de problema pero no consigo hacerlo
PD: evitad usad un lenguaje avanzado, ya que soy nuevo, lo que se es: if, elif,...., while, funciones y rangos


Título: Re: Juego ejercicios [Python]
Publicado por: caro.bello en 30 Mayo 2011, 20:44 pm
hola todos , me gusto mucho su foro por lo sencillo que es asi que me uni!!!

estoy aprendiendo a programar y todavia me da tres vueltas!!
 tengo una duda en particualr
como ordeno un vector ( arreglo)  de mayor a menor ???

gracias