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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Contador de tiempo en Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contador de tiempo en Python  (Leído 10,370 veces)
duRRR

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Contador de tiempo en Python
« en: 25 Mayo 2015, 18:51 pm »

Hola a todos,

Estoy intentando hacer para un trabajo un buscaminas.

El juego en si ya esta funcionando pero me piden que haga un ranking conforme cuanto menos tiempo tardes en encontrar todas las minas mejor puntuación.

De momento he hecho una funcion que inserta en un blog de notas el nombre del jugador cuando ya ha ganado, el problema esta con el tiempo y como ordenar después el ranking de solo los 5 mejores.

Tengo pensado como hacerlo pero no se como aplicarlo:

Mi idea consiste en guardar en una variable la hora actual de cuando se ejecuta el programa y después restarla a la que se haya acabado la partida.

Si alguien pudiese ayudarme estaría muy agradecido.

Gracias por la atención


Os dejo el código para que le echéis un vistazo

Código:
import random
import sys



TAMANY = 8
MINES = 10



def print_taulell (tau):
    print "\n"
    for col in tau:
        for fil in col:
            print fil," ",
        print "\n"


def recompte (col,fil):
    suma = 0
    for a in range (col-1,col+2):
        for b in range (fil-1,fil+2):
            if a>=0 and a<=TAMANY-1 and b>=0 and b<=TAMANY-1:
                if taulell_ocult[a][b]=="*":
                    suma = suma + 1
    return suma

#Guardar partida
def guardar_taulell(fitxer, taulell):
    sortida = open (fitxer, "w")
    for i in range(TAMANY):
        for j in range(TAMANY):
            sortida.write(str(taulell[i][j]))
    sortida.close()
   

#Rankings
def ranking(fitxer):
    sortida = open (fitxer, "a")
    nom = raw_input("Escriu el nom: ")
    sortida.write(nom + '\n')
    sortida.close()
#taulell_ocult
taulell_ocult = []
for A in range (TAMANY):
    taulell_3 = []
    for B in range (TAMANY):
        taulell_3.append (0)
    taulell_ocult.append (taulell_3)

#Taulell_visible
taulell_visible = []
for A in range (TAMANY):
    taulell_3 = []
    for B in range (TAMANY):
        taulell_3.append ("@")
    taulell_visible.append (taulell_3)
   

#colocar les mines
suma = 0
while suma!=MINES:
    random1 = random.randrange(0,TAMANY)
    random2 = random.randrange(0,TAMANY)
    if taulell_ocult[random1][random2] != '*':
        taulell_ocult[random1][random2] = '*'
        suma = suma + 1
#Contament de mines contorn
for col in range (TAMANY):
    for fil in range (TAMANY):
        num = recompte(col,fil)
        if taulell_ocult[col][fil]!="*":
            taulell_ocult[col][fil]=num

#Joc
suma = 0
partida = raw_input("Vols carregar la partida guardada? S/N    ")
if partida=="N":
    while suma!=MINES:
        posicio = raw_input ("M per mina, G per guardar J per jugar ")
    #Mina
        if posicio=="M":
            print "Indica les coordenades per una posicio AMB mines"
            col_mines = input ("Columna:  ") -1
            fil_mines = input ("Fila:  ") -1
            if taulell_ocult[fil_mines][col_mines]=="*":
                suma = suma + 1
                taulell_visible[fil_mines][col_mines]="*"
               
                if suma==MINES:
                    print_taulell (taulell_visible)
                    print "Has guanyat"
                    ranking('ranking.txt')
                    break
            else:
                print_taulell (taulell_ocult)
                print "Has perdut"
                break
            print_taulell (taulell_visible)
            print "Et queden",MINES-suma,"mines"
   
    #Guardar partida
        if posicio == "G":
            guardar_taulell("ocult.txt",taulell_ocult)
            guardar_taulell("visible.txt", taulell_visible)
            print "Has guardat la partida"
            break
   
    #Selecionar jugada
        if posicio == "J":
            print "Indica les coordenades per una posicio SENSE mines"
            columna = input ("Columna:   ") -1
            fila = input ("Fila:   ") -1
            if taulell_ocult[fila][columna]!="*":
                taulell_visible[fila][columna]=taulell_ocult[fila][columna]
            else:
                print_taulell (taulell_ocult)
                print "Has perdut"
                break
            print_taulell (taulell_visible)
            print "Et queden",MINES-suma,"mines"
    print "\n"
else:
   
    raw_input()



« Última modificación: 25 Mayo 2015, 19:10 pm por duRRR » En línea

hirako

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Contador de tiempo en Python
« Respuesta #1 en: 26 Mayo 2015, 15:07 pm »

Quizás no sea la solución más sofisticada, pero esto es lo que uso regularmente para 'medir' el tiempo que demora en correr un algoritmo. Aquí va:

Código
  1. import time
  2.  
  3. # start measuring time
  4. start = time.time()
  5.  
  6. # task to measure
  7. l = [x for x in range(1000000)]
  8.  
  9. # end measuring time
  10. end = time.time()
  11.  
  12. # getting elapsed time
  13. time_elapsed = end - start
  14. time_in_miliseconds = time_elapsed * 1000
  15.  
  16. # printing information
  17. print 'time elapsed:\t{}'.format(time_elapsed)
  18. print 'time elapsed:\t{} ms'.format(time_in_miliseconds)
  19.  

Espero que te sirva.

PD: Lo puse en texto plano porque no tengo ni idea de cómo poner un snippet de código en el post.

Mod: código modificado, para colocarlo como código debes usar las etiquetas GeSHi


« Última modificación: 26 Mayo 2015, 22:16 pm por engel lex » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Contador de tiempo en Python
« Respuesta #2 en: 26 Mayo 2015, 15:08 pm »

Código
  1. from time import time
  2.  
  3. def inicio():                 #inicio del tiempo
  4. global inicio_tiempo      #hay que declarar la variable como global    
  5. inicio_tiempo = time()    #captura tiempo
  6.  
  7. def terminado():
  8. global tiempo_pasado
  9. tiempo_pasado= time() - inicio_tiempo
  10. if tiempo_pasado > 60:
  11. minutos=(tiempo_pasado %3600 /60)
  12. print("minutos %d " %minutos)
  13. else:
  14. print("segundos: %.2f seconds." % tiempo_pasado)
  15.  
  16. def Ordenar():
  17. Ranking=["3 : Ricardo","9 : Alejandra","1 : El Mejor","6: Otro"]  #crear una lista con el tiempo y nombre
  18. Ranking.sort()    #ordenar la lista
  19. print(Ranking)
  20.  
  21. inicio() #inicio del tiempo
  22. iniciar = input("Nombre del Jugador: ") #acá van las funciones que controlan el inicio y final
  23. terminar = input("Terminar ")           #en este caso mide el tiempo entre que escribís el nombre y el enter de terminar
  24. terminado()                             #una idea de como mostrar el tiempo
  25. Ordenar()                               #obvio que creas un txt con los ganadores y después al leerlos creas una lista         #despues de ordenarla solo mostr&#347;s los 5 primeros en caso de que haya más
  26.  

para ordenar creas listas y listo
En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: Contador de tiempo en Python
« Respuesta #3 en: 27 Mayo 2015, 06:26 am »

Código
  1. '''
  2. Autor: JaAViEr|0x5d
  3. Twitter: @javieresteban__
  4. Website: http://www.codigo.ga
  5. '''
  6. from time import sleep
  7. import threading
  8.  
  9. class Timer(threading.Thread):
  10.  
  11. def __init__(self, tiempo):
  12.  
  13. threading.Thread.__init__(self)
  14. self.tiempo = tiempo
  15. self.status = True
  16.  
  17. def run(self):
  18.  
  19. for i in range(self.tiempo):
  20.  
  21. sleep(1)
  22.  
  23. self.status = False
  24.  
  25. tiempo = Timer(5)
  26. tiempo.start()
  27. n = raw_input("Nombre :> ")
  28. if tiempo.status:
  29.  
  30. print "Tu nombre es", n
  31.  
  32. else:
  33.  
  34. print "Tardaste mas de 5 segundos en responder"
Un ejemplo usando Thread, así podemos ejecutar otra tarea mientras el tiempo se cuenta por separado.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[PYTHON] Contador de palabras
Scripting
ChicoMaravilla 2 11,005 Último mensaje 5 Abril 2011, 20:47 pm
por Novlucker
Realizar contador en un período de tiempo. PIC16F886 en C
Electrónica
shoshonee 0 4,355 Último mensaje 26 Mayo 2011, 20:17 pm
por shoshonee
[Python] Contador de edades
Scripting
sora_ori 2 3,076 Último mensaje 20 Noviembre 2013, 15:29 pm
por sora_ori
Contador de tiempo
Java
Baal_30 4 3,323 Último mensaje 29 Febrero 2016, 06:25 am
por El Benjo
Contador de puntos según el tiempo que llevas jugando
Java
aspiazu 3 1,867 Último mensaje 30 Abril 2016, 17:03 pm
por + 1 Oculto(s)
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines