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.

Las variables no están modificando a las variables originales dentro de una función.

Tengo variables, digamos variables A fuera de las funciones. En una función, mi función, se agrega un número entero aleatorio a las variables separadas en las variables A. Pero cuando llamo a la función inv después de llamar a la función mine_command(), las variables A permanecen en 0. No se agregaron. ¿Qué hago?

P.S. esto es de un archivo. El archivo principal importa estas funciones al archivo principal para ejecutar.

import time as t
import random as rm

cobblestone = 0
carbón = 0
mineralDeHierro = 0
lingoteDeHierro = 0
esmeralda = 0
diamante = 0
roble = 0
abedul = 0
maderaRoja = 0
abeto = 0
acacia = 0
selva = 0
arce = 0
efectivo = 0

inventario = (cobblestone, carbón, mineralDeHierro, lingoteDeHierro, esmeralda, diamante, roble, abedul, maderaRoja, abeto, acacia, selva, arce, efectivo)

def comando_ayuda():
  print('Aquí están todos los comandos disponibles.')
  print('''1. 'mina'
Excava bajo tierra para encontrar varios recursos.
2. 'vender'
Vende cualquier elemento que desees.
3. 'cortar'
Corta árboles. ¡Oh, qué emoción, deforestación!
4. 'inv'
Muestra tu inventario.
5. 'saldo'
Muestra la cantidad total de dinero en efectivo.''')
  print('---------------------------------------------')

def comando_mina():
  print('Minando...')
  t.sleep(5)

cobblestoneC = rm.randint(64, 128)
  coalC = rm.randint(32, 64)
  ironOreC = rm.randint(16, 48)
  emeraldC = rm.randint(1, 3)
  chance = ('0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '3', '3', '3', '3', '3', '3', '5', '5', '5', '8')
  diamondC = rm.choice(chance)

print("Obtuviste " + str(cobblestoneC) + " piedra, " + str(coalC) + " carbón, " + str(ironOreC) + " mineral de hierro, " + str(emeraldC) + " esmeralda y " + str(diamondC) + " diamante")

cobblestone += cobblestoneC
  carbón += coalC
  mineralDeHierro += ironOreC
  esmeralda += emeraldC
  diamante += diamondC

print('---------------------------------------------')
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para que las variables A se actualicen fuera de la función, la función necesita devolver las variables actualizadas. Actualmente, la función mine_command() no está devolviendo nada.

    Para actualizar el inventario fuera de la función, necesitarías agregar una declaración de retorno a la función mine_command() que devuelva el inventario actualizado:

    def mine_command():
      # ... código existente ...
      return inventario 
    

    Luego, puedes actualizar la variable de inventario fuera de la función asignándola al resultado de la función mine_command():

    inventario = mine_command()
    

    Después de hacer eso, cuando llames a la función inv_function(), se debería mostrar el inventario actualizado.

Comments are closed.