[ Foro de Python ]

Necesito ayuda para calcular valores que cambian dentro de un bucle while con otro valor que no esta en un bucle while

22-Jul-2018 14:01
Invitado (Marc2500)
1 Respuestas

No se si me explico bien en el titulo, por lo tanto lo explico aquí. Basicamente quiero hacer una calculadora de los puntos que gano en un videojuego, para eso he recurrido a python, lo que me pasa es que dentro del bucle no para de preguntar cual es la puntuacion que tienes en la siguiente partida (esto está bien), pero lo malo es que cada vez que pregunta por el nuevo valor, el programa resta el valor que introduce en usuario por el primer valor de todos que se ha escrito (el que no esta dentro del bucle while). Lo que quiero hacer es que el programa siempre se fije en el valor anterior para restar los puntos y saber cuantos puntos he ganado en referencia a la anterior partida. Espero que me haya explicado bien. Aqui está mi código. (Overwatch es el nombre del videojuego y SR es el tipo de puntos en ese videojuego)


starting_sr = raw_input("Type your starting SR: ")
(starting_sr)
print("Your starting SR is " + starting_sr)
def createfile():
    file=open('Overwatch SR.txt',"a")
    file.close()
createfile()


from datetime import *

datetime_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

def write_starting_sr():
    file=open('Overwatch SR.txt',"a")
    file.write('|--------------------------------------|\n')
    file.write("[")
    file.write(datetime_now)
    file.write("] " + "Starting SR: ")
    file.write(starting_sr)
    file.write("\n")
    file.close()
write_starting_sr()

 
while(True):
    next_game_sr = (raw_input("Type your next game SR: "))
    (next_game_sr)

    calculated_sr = int(next_game_sr) - int(starting_sr)

    if starting_sr < next_game_sr:
        print ("VICTORY " + "+" + str(calculated_sr))

    elif starting_sr > next_game_sr:
        print ("DEFEAT" + str(calculated_sr))

    else:
        print ("DRAW " + str(calculated_sr))
        if starting_sr < next_game_sr:

            def write_victory_sr():

                file=open('Overwatch SR.txt',"a")
                file.write("[")
                file.write(datetime_now)
                file.write("] ")
                file.write("VICTORY " + "+" + str(calculated_sr))
                file.write("\n")
                file.close()
                write_victory_sr()


        elif int(starting_sr) > int(next_game_sr):

            def write_defeat_sr():

                file=open('Overwatch SR.txt',"a")
                file.write("[")
                file.write(datetime_now)
                file.write("] ")
                file.write("DEFEAT " + str(calculated_sr))
                file.write("\n")
                file.close()
                write_defeat_sr()

        else:

            def write_draw_sr():
                file=open('Overwatch SR.txt',"a")
                file.write("[")
                file.write(datetime_now)
                file.write("] ")
                file.write("DRAW " + str(calculated_sr))
                file.write("\n")
                file.close()
                write_draw_sr()


 


11-Aug-2018 12:56
Nacho Cabanes (+84)

Cuesta leer el programa, con tanta línea en blanco intermedia (que he eliminado en su mayoría) y tanto código repetitivo.

Aun así, imagino que para lo que pretendes te debería bastar con actualizar el nuevo punto de partida al final de cada ejecución:


starting_sr = calculated_sr


 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)