Ayuda con Python

Iniciado por Soft87, 26 Mayo 2011, 02:19 AM

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

Soft87

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 (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-



import os
import time
import random



def CrearMatriz():
    matriz = []
    for i in range (8):
        matriz.append([0]*8)
    return   matriz

def ImprimirMatriz(matriz):
    for x in range(1,7):
        for y in range(1,7):
            print matriz[y][x],
        print
           
def GolpeaMatriz(matriz, fila, columna):
    if (matriz[fila][columna]>0):
        matriz[fila][columna] = matriz[fila][columna]-1
    else:
        matriz[fila][columna] = 3
   
    if (matriz[fila-1][columna]>0):
        matriz[fila-1][columna] = matriz[fila-1][columna]-1
    else:
        matriz[fila-1][columna] = 3

    if (matriz[fila+1][columna]>0):
        matriz[fila+1][columna] = matriz[fila+1][columna]-1
    else:
        matriz[fila+1][columna] = 3

    if (matriz[fila][columna-1]>0):
        matriz[fila][columna-1] = matriz[fila][columna-1]-1
    else:
        matriz[fila][columna-1] = 3

    if (matriz[fila][columna+1]>0):
        matriz[fila][columna+1] = matriz[fila][columna+1]-1
    else:
        matriz[fila][columna+1] = 3


def SumaMatriz(matriz, fila, columna):
    if (matriz[fila][columna]<3):
        matriz[fila][columna] = matriz[fila][columna]+1
    else:
        matriz[fila][columna] = 0
       
    if (matriz[fila-1][columna]<3):
        matriz[fila-1][columna] = matriz[fila-1][columna]+1
    else:
        matriz[fila-1][columna] = 0

    if (matriz[fila+1][columna]<3):
        matriz[fila+1][columna] = matriz[fila+1][columna]+1
    else:
        matriz[fila+1][columna] = 0

    if (matriz[fila][columna-1]<3):
        matriz[fila][columna-1] = matriz[fila][columna-1]+1
    else:
        matriz[fila][columna-1] = 0

    if (matriz[fila][columna+1]<3):
        matriz[fila][columna+1] = matriz[fila][columna+1]+1
    else:
        matriz[fila][columna+1] = 0


def GeneraNivel(matriz, nivel):
    for x in range(nivel*3):
        fila = random.randint(1,6)
        columna = random.randint(1,6)
        SumaMatriz(matriz, fila, columna)
    return matriz




print
matriz = CrearMatriz()
ListaFila = []
ListaColumna = []
numerogolpes = 0
print
nombre = raw_input('Introduzca un nombre: ')
print
nivel = int(raw_input('Introduzca un nivel del 1 al 9: '))
while (nivel < 1) or (nivel > 9):
        nivel = int(raw_input('Introduzca un nivel del 1 al 9: '))
matriz = GeneraNivel(matriz, nivel)
print
os.system('clear')
ImprimirMatriz(matriz)
print
print
tecla = raw_input('''(P) Introducir posicion          (S) Salir del juego
(N) Nueva partida                (D) Deshacer movimiento


Pulse una tecla: ''')
while (tecla != 'S') or (tecla != 's'):
    if (tecla == 'P') or (tecla == 'p'):
        print
        fila = int(raw_input('Introduzca una fila: '))
        while (fila < 1) or (fila > 6):
            fila = int(raw_input('Introduzca una fila: ')) 
        columna = int(raw_input('Introduzca una columna: '))
        while (columna < 1) or (columna > 6):
               columna = int(raw_input('Introduzca una columna: '))
        GolpeaMatriz(matriz, columna, fila)
        numerogolpes = numerogolpes + 1
        ListaFila.append(fila)
        ListaColumna.append(columna)
        print
        os.system('clear')
        ImprimirMatriz(matriz)
        puntuacion = float(numerogolpes/3*nivel)
        exito = True
        for x in range(1,7):
            for y in range(1,7):
                if (matriz[y][x] != 0):
                    exito = False
        if (exito == True):
            print
            print 'Enhorabuena ',nombre,' has terminado el juego.'
            print
            print 'Puntuacion: ',puntuacion
            print
            print
            C = {"N": nombre,"P": puntuacion}
            CN = (C["N"])
            CP = str((C["P"]))
            f = open("R.txt","a")
            f.write(CP)
            f.write(" puntuacion de ")
            f.write(CN)
            f.write("\n")
            f.close()
            print
            print
            print
           
        print
    elif (tecla == 'S') or (tecla == 's'):
        break
    elif (tecla == 'D') or (tecla =='d'):
        SumaMatriz(matriz, columna, fila)
        if (numerogolpes > 0):
            numerogolpes = numerogolpes - 1
        ListaFila.pop()
        ListaColumna.pop()
        print
        os.system('clear')
        ImprimirMatriz(matriz)
        print
    elif (tecla == 'N') or (tecla == 'n'):
        nivel = int(raw_input('Introduzca un nivel del 1 al 9: '))
        matriz = CrearMatriz()
        GeneraNivel(matriz,nivel)
        os.system('clear')
        ImprimirMatriz(matriz)
       
    print   
    tecla = raw_input('''(P) Introducir posicion          (S) Salir del juego
(N) Nueva partida                (D) Deshacer movimiento


Pulse una tecla: ''')

leogtz

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

¡Lee las reglas!
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Novlucker

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
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