Traté de hacer un pequeño juego pero mi código no funciona. ¿Qué debo hacer?

Intenta esto en su lugar

def myDef ():
myG, myAp = 0,0 # myG = 0 y myAp = 0
name = input (“Juguemos un juego, ¿cómo te llamas?”)
try_again = True
mientras try_again:
chll = input (“Muy bien, ¿quieres elegir una manzana:”)
chll = chll.upper () # hace que la entrada del usuario sea mayúscula
if (chll.startswith (“Y”)): # si la entrada de los usuarios comienza con Y
print (“Felicidades”, nombre, “lo hiciste!”)
myAp + = 1 # significa myAp = myAp +1
print (“¡Ahora tienes”, myAp, “manzanas!”)
más:
print (“Muy bien”, nombre, “¡no hay manzanas para ti!”)
chl = input (“¿Quieres volver a jugar:”)
chl = chl.upper ()
if (chl.startswith (“Y”)):
myDef ()
más:
try_again = False
if (myAp! = 0):
print (“Ok”, nombre, “Has decidido no volver a jugar”)
print (“\ r \ n”) # solo una nueva línea
chlll = input (“¿Le gustaría vender sus manzanas:”)
chlll = chlll.upper ()
if (chlll.startswith (“Y”)):
myGo = myG + myAp
myAp = 0
print (“Ahora tienes”, myGo, “oro y 0 manzanas”)
más:
print (“Tienes”, myG, “oro y”, myAp, “manzanas”)
de lo contrario: # el usuario no debería molestarse en vender si tiene 0 manzanas
print (“Tienes”, myG, “oro y”, myAp, “manzanas”)
regreso

Esto parece un poco más grande en tamaño pero va a hacer lo que quieras; efectivamente

Cambios:

  • Se eliminó la variable myA porque su programa original nunca incrementó myA. Entonces, cuando el usuario vuelva a jugar, tendrá una sola manzana. El nuevo programa incrementa myA
  • ¡Tienes que poner tus variables locales dentro de tu función! A menos que obtenga la referencia antes del error de asignación.
  • Incluyó la variable try_again y la asignó a la variable booleana True. Cuando el usuario no quiere volver a jugar, el programa establece try_again en falso
  • Incluyó la variable de nombre mucho más en los resultados para hacer que el juego sea más interactivo. Observe cómo pongo la entrada de nombre antes del bucle try_again. Si no se hace de esta manera, el usuario ingresará su nombre cada vez que intente jugar nuevamente
  • Usó los métodos upper () y comienza con () en la entrada del usuario. El método upper () hace que la entrada del usuario sea en mayúsculas. Mientras que el método beginwith () verifica que la entrada de los usuarios comience con “Y” antes de continuar. De esta manera, el usuario puede escribir “y” o “sí” o “sí” en cualquier caso.
  • Incluye un control if en la variable myAp. El usuario no debería molestarse en ver la opción de venta de manzana si su recuento de manzanas es 0.

Eso es más o menos, también debe considerar cambiar las variables de entrada del usuario chlll, chl y chll a algo más comprensivo.

PD: si tiene alguna pregunta o sugerencia y, lo que es más importante, si ha visto algún error, comente. Contestaré tan pronto como pueda.

¿Esforzarse más?

Depurarlo?

Agregar seguimiento / imprimir declaración aquí y allá?

No sé su idioma, entorno, código, etc. Difícil de aconsejar más allá de respuestas muy amplias …

[EDITAR] Veo algo de información en las etiquetas, y pones el código en un comentario, en lugar de la descripción. Quora los esconde a todos en su interfaz para responder solicitudes. Tenga esto en cuenta para su próxima pregunta.
Además, no conozco Python, ¡me pregunto por qué Quora sigue sugiriéndome! (¡y esta respuesta no ayudará con este problema!)

Asumiré que (no funciona) significa que no funciona correctamente debido a errores lógicos. en este caso, deberías
1- revisa las funciones importantes del juego. Asegúrate de que estén escritas correctamente e intenta depurar tu código.

2-búsqueda en Stackoverflow. (si es un juego pequeño. Entonces estoy seguro de que hay muchos programadores que lo hicieron antes que tú y tienen más experiencia).

“No funciona” es una declaración compleja. Debieras

(1) identifique dónde “no funciona”

(2) identifique lo que debe hacer y lo que realmente hace

(3) pregunte nuevamente si no puede encontrar la solución usted mismo (incluido buscar en Google el problema)