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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda con Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Python  (Leído 2,999 veces)
Soft87

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con Python
« en: 26 Mayo 2011, 02:19 am »

Hola a todos.
Estoy haciendo un programa en python (el buttonmania).

Tengo el programa muy avanzado pero tengo un problema:

Tengo que meter la opcion de rankin, consigo crear un diccionario que guarda los diferente nombres y puntuaciones de lo jugadores pero no consigo que me los ordene por puntuacion (crea y va guardando los datos en un archivo de texto).

Se que tengo que usar el sort o sorted, pero buscando por google no me ha quedado nada claro como se utiliza para ordenarlo.

Teniendo que es mi primer programa "serio" en python me esta costando mucho xD

Os pongo mi codigo para que lo veais un poco, no seais muy duros que es mi primer programa y se que podria estar mucho mejor hecho... pero al menos funciona xD


Agradeceria mucho la ayuda con el sort ya que con eso estoy muy perdido...

No quiero que me lo arregleis sino que me deis informacion para aprender a usar el sort :)

Gracias por vuestro tiempo!
Código
  1. #!/usr/bin/env python
  2. # -*- coding: iso-8859-15 -*-
  3.  
  4.  
  5.  
  6. import os
  7. import time
  8. import random
  9.  
  10.  
  11.  
  12. def CrearMatriz():
  13.    matriz = []
  14.    for i in range (8):
  15.        matriz.append([0]*8)
  16.    return   matriz
  17.  
  18. def ImprimirMatriz(matriz):
  19.    for x in range(1,7):
  20.        for y in range(1,7):
  21.            print matriz[y][x],
  22.        print
  23.  
  24. def GolpeaMatriz(matriz, fila, columna):
  25.    if (matriz[fila][columna]>0):
  26.        matriz[fila][columna] = matriz[fila][columna]-1
  27.    else:
  28.        matriz[fila][columna] = 3
  29.  
  30.    if (matriz[fila-1][columna]>0):
  31.        matriz[fila-1][columna] = matriz[fila-1][columna]-1
  32.    else:
  33.        matriz[fila-1][columna] = 3
  34.  
  35.    if (matriz[fila+1][columna]>0):
  36.        matriz[fila+1][columna] = matriz[fila+1][columna]-1
  37.    else:
  38.        matriz[fila+1][columna] = 3
  39.  
  40.    if (matriz[fila][columna-1]>0):
  41.        matriz[fila][columna-1] = matriz[fila][columna-1]-1
  42.    else:
  43.        matriz[fila][columna-1] = 3
  44.  
  45.    if (matriz[fila][columna+1]>0):
  46.        matriz[fila][columna+1] = matriz[fila][columna+1]-1
  47.    else:
  48.        matriz[fila][columna+1] = 3
  49.  
  50.  
  51. def SumaMatriz(matriz, fila, columna):
  52.    if (matriz[fila][columna]<3):
  53.        matriz[fila][columna] = matriz[fila][columna]+1
  54.    else:
  55.        matriz[fila][columna] = 0
  56.  
  57.    if (matriz[fila-1][columna]<3):
  58.        matriz[fila-1][columna] = matriz[fila-1][columna]+1
  59.    else:
  60.        matriz[fila-1][columna] = 0
  61.  
  62.    if (matriz[fila+1][columna]<3):
  63.        matriz[fila+1][columna] = matriz[fila+1][columna]+1
  64.    else:
  65.        matriz[fila+1][columna] = 0
  66.  
  67.    if (matriz[fila][columna-1]<3):
  68.        matriz[fila][columna-1] = matriz[fila][columna-1]+1
  69.    else:
  70.        matriz[fila][columna-1] = 0
  71.  
  72.    if (matriz[fila][columna+1]<3):
  73.        matriz[fila][columna+1] = matriz[fila][columna+1]+1
  74.    else:
  75.        matriz[fila][columna+1] = 0
  76.  
  77.  
  78. def GeneraNivel(matriz, nivel):
  79.    for x in range(nivel*3):
  80.        fila = random.randint(1,6)
  81.        columna = random.randint(1,6)
  82.        SumaMatriz(matriz, fila, columna)
  83.    return matriz
  84.  
  85.  
  86.  
  87.  
  88. print
  89. matriz = CrearMatriz()
  90. ListaFila = []
  91. ListaColumna = []
  92. numerogolpes = 0
  93. print
  94. nombre = raw_input('Introduzca un nombre: ')
  95. print
  96. nivel = int(raw_input('Introduzca un nivel del 1 al 9: '))
  97. while (nivel < 1) or (nivel > 9):
  98.        nivel = int(raw_input('Introduzca un nivel del 1 al 9: '))
  99. matriz = GeneraNivel(matriz, nivel)
  100. print
  101. os.system('clear')
  102. ImprimirMatriz(matriz)
  103. print
  104. print
  105. tecla = raw_input('''(P) Introducir posicion          (S) Salir del juego
  106. (N) Nueva partida                (D) Deshacer movimiento
  107.  
  108.  
  109. Pulse una tecla: ''')
  110. while (tecla != 'S') or (tecla != 's'):
  111.    if (tecla == 'P') or (tecla == 'p'):
  112.        print
  113.        fila = int(raw_input('Introduzca una fila: '))
  114.        while (fila < 1) or (fila > 6):
  115.            fila = int(raw_input('Introduzca una fila: '))  
  116.        columna = int(raw_input('Introduzca una columna: '))
  117.        while (columna < 1) or (columna > 6):
  118.               columna = int(raw_input('Introduzca una columna: '))
  119.        GolpeaMatriz(matriz, columna, fila)
  120.        numerogolpes = numerogolpes + 1
  121.        ListaFila.append(fila)
  122.        ListaColumna.append(columna)
  123.        print
  124.        os.system('clear')
  125.        ImprimirMatriz(matriz)
  126.        puntuacion = float(numerogolpes/3*nivel)
  127.        exito = True
  128.        for x in range(1,7):
  129.            for y in range(1,7):
  130.                if (matriz[y][x] != 0):
  131.                    exito = False
  132.        if (exito == True):
  133.            print
  134.            print 'Enhorabuena ',nombre,' has terminado el juego.'
  135.            print
  136.            print 'Puntuacion: ',puntuacion
  137.            print
  138.            print
  139.            C = {"N": nombre,"P": puntuacion}
  140.            CN = (C["N"])
  141.            CP = str((C["P"]))
  142.            f = open("R.txt","a")
  143.            f.write(CP)
  144.            f.write(" puntuacion de ")
  145.            f.write(CN)
  146.            f.write("\n")
  147.            f.close()
  148.            print
  149.            print
  150.            print
  151.  
  152.        print
  153.    elif (tecla == 'S') or (tecla == 's'):
  154.        break
  155.    elif (tecla == 'D') or (tecla =='d'):
  156.        SumaMatriz(matriz, columna, fila)
  157.        if (numerogolpes > 0):
  158.            numerogolpes = numerogolpes - 1
  159.        ListaFila.pop()
  160.        ListaColumna.pop()
  161.        print
  162.        os.system('clear')
  163.        ImprimirMatriz(matriz)
  164.        print
  165.    elif (tecla == 'N') or (tecla == 'n'):
  166.        nivel = int(raw_input('Introduzca un nivel del 1 al 9: '))
  167.        matriz = CrearMatriz()
  168.        GeneraNivel(matriz,nivel)
  169.        os.system('clear')
  170.        ImprimirMatriz(matriz)
  171.  
  172.    print    
  173.    tecla = raw_input('''(P) Introducir posicion          (S) Salir del juego
  174. (N) Nueva partida                (D) Deshacer movimiento
  175.  
  176.  
  177. Pulse una tecla: ''')


« Última modificación: 26 Mayo 2011, 08:56 am por Soft87 » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda con Python
« Respuesta #1 en: 26 Mayo 2011, 08:01 am »

Para algo está la etiqueta GeSHi, selecciona tu código y selecciona Python en la etiqueta GeShi.

¡Lee las reglas!


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ayuda con Python
« Respuesta #2 en: 27 Mayo 2011, 02:52 am »

Tu problema es que tienes los datos guardados en un archivo de texto, por lo que deberías de leer el archivo completo, generar una lista parseada de algún modo, y luego si ordenarlos
http://wiki.python.org/moin/HowTo/Sorting/

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con python
Scripting
saok 4 3,969 Último mensaje 16 Junio 2005, 15:54 pm
por saok
(Python)Existen ventanas de entrada y salida de datos en python « 1 2 »
Scripting
tonilogar 11 15,585 Último mensaje 29 Noviembre 2009, 00:49 am
por tonilogar
Ayuda con Python « 1 2 »
Scripting
Ideka 12 8,263 Último mensaje 19 Febrero 2010, 23:32 pm
por leogtz
Ayuda Con [Python]
Scripting
jero22 3 2,470 Último mensaje 2 Abril 2010, 20:51 pm
por Masita
[python]VideoTraining Aprende A Programar En Python desde 0 « 1 2 3 »
Scripting
juh 22 17,443 Último mensaje 16 Octubre 2010, 13:12 pm
por Pere Navarro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines