[ Foro de Python ]

Como puedo guardar en un txt estadisticas de un juego en python

26-Oct-2022 23:37
Invitado (Juan de Mariana)
1 Respuestas

Hola a todos:
En este código estoy intentando meter a mi documento statistics.txt ciertos datos sobre el usuario que está usando el juego. El programa se ejecuta correctamente (aunque solo en modo fácil por ahora), pero no añade ninguna estadística a mi documento. Estoy usando este código para la estadística:
f = open("statistics.txt","a")
f.write(str(m)+" | Ganó | " +"en "+str(numeroDeIntentos)+"intentos")

¿Me podéis ayudar por favor?

Muchas gracias.

CÓDIGO:

import random

t=random.randint(1,1000)

numeroDeIntentos=0

f = open("statistics.txt","a")

m=input("¿Cual es tu nombre?")

print(f"Bienvenido {m}, este juego consiste en adivinar un número que yo he generado aleatoriamente entre 1 y 1000")

def juegoSolitarioFacil(numeroDeIntentos):

   while numeroDeIntentos<=20:

       w=int(input("He generado un número aleatorio entre 1 y 1000, intenta adivinarlo, tienes 20 intentos: "))

       numeroDeIntentos=numeroDeIntentos+1

       if w<t:

           print("Tu número es demasiado pequeño")

       if w>t:

           print("Tu número es demasiado grande")

       if w==t:

           print("Lo adivinaste")

           f.write(str(m)+" | Ganó | " +"en "+str(numeroDeIntentos)+"intentos")

           break

   if numeroDeIntentos>20:

       print(f"Fallaste, te pasaste de intentos, el número que buscabas era {t}, inténtalo de nuevo")

       f.write(str(m)+" | Perdió | " +"en "+str(numeroDeIntentos)+"intentos")

       MenuPrincipal()



def MenuPrincipal():

   q=input("""Bienvenido. Este juego tiene los siguientes modos, tu eliges:

   1. Partida modo solitario

   2. Partida 2 Jugadores

   3. Estadística

   4. Salir

   """)

   if q==("Partida modo solitario" or "Partida 2 Jugadores"):

       e=input("""Ahora debes elegir la dificultad del juego en función del nº de intentos disponibles:

       1. Fácil (20 intentos)

       2. Medio (12 intentos)

       3. Difícil (5 intentos)""")

       if q=="Partida modo solitario" and e=="Fácil":

           juegoSolitarioFacil(numeroDeIntentos)

       if q=="Partida modo solitario" and e=="Medio":

           juegoSolitarioMedio()

       if q=="Partida modo solitario" and e=="Difícil":

           juegoSolitarioDificil()

MenuPrincipal()


30-Oct-2022 20:37
Invitado (joaquin)

   hola juan

   python es muy estricto con las tabulaciones, tenias alguna línea
   con el número de espacios incorrecto

   el nombre de las variables debe pode leerse o entenderse con
   claridad, tal como has hecho con las funciones

   la variable 'e' la comparas cuando puede que no entres en
   el if anterior y por lo tanto no exista

   'numeroDeIntentos' lo tienes como argumento de una función y como
   variable global, cuando debería ser local y enviar max_intentos
   con los valores 20,12 o 5 en vez de tener un 20

   para crear una cadena con variables se recomienda
   f'{var}' o '{}'.format(var) es mas claro

   la manera en que comparas la 'q' no es correcta

   se supone que el usuario debe elegir un número (en la variable 'e')

   usa constantes en vez de números concretos, se lee mejor y
   puedes modificar el dato con facilidad

   debes evitar las variables globales, es mala práctica

   acuerdate de cerrar el archivo antes de cerrar el programa


   te paso una posible solución:
   
   https://www.online-ide.com/p7eUCydK1w

   saludos :-)






(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.)