[ Foro de Python ]
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()
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.)