es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hago funcionar este trozo de código de Python?

Estoy haciendo un proyecto en Replit que genera dinero, pero no en la vida real. Quiero que los ‘wheat_seeds’, ‘melon_seeds’, ‘pumpkin_seeds’, ‘wheat’, ‘melon’ y ‘pumpkin’ estén disponibles dentro y fuera de las funciones, y que se puedan cambiar en diferentes funciones. Intenté poner estas variables dentro y fuera del ‘comando_farm’ para eliminar el ‘error de sintaxis’, pero no funciona. Si también puedes mejorar este fragmento de código…

from replit import db

<h1>Esta función se ejecuta cuando se ejecuta el comando 'ayuda'</h1>

def comando_ayuda():
  print("Así que necesitas ayuda...")
  print("¡Me alegra ayudar!")

print("1. 'ayuda'")
print("2. 'cultivar'")
print("3. 'cosechar'")

<h1>Esta función se ejecuta cuando se ejecuta el comando 'cultivar'</h1>

def comando_cultivar():
  global wheat_seeds
  global melon_seeds
  global pumpkin_seeds
  global wheat
  global melon
  global pumpkin
  wheat_seeds = 1
  melon_seeds = 1
  pumpkin_seeds = 1
  wheat = 0
  melon = 0
  pumpkin = 0

print("¿Qué semilla quieres cultivar?")
cultivo = input("Semilla: ")
cultivo = cultivo.lower()

if cultivo == "wheat_seeds":
    print("Has plantado " + str(wheat_seeds) + " semilla/s de trigo.")
    wheat_seeds -= wheat_seeds

<h1>La cantidad de dinero del usuario</h1>

db["Usuario"] = {
  "billetera": 0,
  "banco": 0
}

<h1>Este es el inventario del usuario</h1>

inventario = [wheat_seeds, melon_seeds, pumpkin_seeds, wheat, melon, pumpkin]

<h1>Esto se solicita al usuario para preguntar qué comando debe ejecutarse</h1>

comando = input("Comando: ")

<h1>Esto verifica qué comando se ha ingresado y ejecuta el comando correspondiente</h1>

if comando == "ayuda":
  comando_ayuda()
elif comando == "cultivar":
  comando_cultivar()
Tags:  , ,

Answer

  1. Avatar for davy.ai

    En primer lugar, el error de sintaxis se debe al uso de la palabra clave “global” en las asignaciones de variables dentro de la función “farm_command()”. La palabra clave global se utiliza para declarar una variable global dentro de una función, pero debe usarse por separado de la declaración de asignación. Por lo tanto, elimina “global” de las asignaciones de variables y decláralas como variables globales fuera de la función.

    wheat_seeds = 1
    melon_seeds = 1
    pumpkin_seeds = 1
    wheat = 0
    melon = 0
    pumpkin = 0
    
    def farm_command():
        global wheat_seeds, melon_seeds, pumpkin_seeds, wheat, melon, pumpkin
        # resto de la función
    

    Ahora, para hacer estas variables disponibles fuera de las funciones, también decláralas como variables globales fuera de las funciones, y podrás acceder a ellas dentro de las funciones sin usar la palabra clave global.

    wheat_seeds = 1
    melon_seeds = 1
    pumpkin_seeds = 1
    wheat = 0
    melon = 0
    pumpkin = 0
    
    def farm_command():
        # accede a las variables sin "global"
    
    def help_command():
        # accede a las variables sin "global"
    

    Finalmente, para cambiar las variables en diferentes funciones, puedes usar la palabra clave global al cambiar sus valores. Por ejemplo:

    def farm_command():
        global wheat_seeds
    
        if farm_seed == "wheat_seeds":
            print("Has plantado " + str(wheat_seeds) + " semilla/s de trigo")
            wheat_seeds = 0
    

    En general, el código mejorado se vería así:

    from replit import db
    
    wheat_seeds = 1
    melon_seeds = 1
    pumpkin_seeds = 1
    wheat = 0
    melon = 0
    pumpkin = 0
    
    def help_command():
        print("Entonces necesitas ayuda...")
        print("¡Estoy feliz de ayudar!")
        print("1. 'help'")
        print("2. 'farm'")
        print("3. 'harvest'")
    
    def farm_command():
        global wheat_seeds, melon_seeds, pumpkin_seeds, wheat, melon, pumpkin
    
        print("¿Qué semilla quieres cultivar?")
        farm_seed = input("Semilla: ").lower()
    
        if farm_seed == "wheat_seeds":
            print("Has plantado " + str(wheat_seeds) + " semilla/s de trigo")
            wheat_seeds = 0
        # resto de la función
    
    # La cantidad de dinero del usuario
    db["Usuario"] = {
        "billetera": 0,
        "banco": 0
    }
    
    # Este es el inventario del usuario
    inventario = [wheat_seeds, melon_seeds, pumpkin_seeds, wheat, melon, pumpkin]
    
    # Esto solicita al usuario qué comando se debe ejecutar
    comando = input("Comando: ")
    
    # Esto verifica qué comando se ingresó y ejecuta el comando respectivo
    if comando == "help":
        help_command()
    elif comando == "farm":
        farm_command()
    

Comments are closed.