Python 不一致;UnboundLocalError:赋值前引用的局部变量;错误,函数中定义了变量

Python 不一致;UnboundLocalError:赋值前引用的局部变量;错误,函数中定义了变量,python,python-3.x,function,Python,Python 3.x,Function,我一直在使用Python制作一个简单的文本RPG,我偶尔会出错,但不是每次都会 有时,当我通过序列,进入战斗,它会给我以下错误: UnboundLocalError: local variable referenced before assignment 或 错误总是源于fightScreen()函数中的第101行: enemy["level"] = player["level"] 我已经在Google上搜索了Stack Overflow,发现函数试图重新定义变量而不是使用以前的变量是有问题

我一直在使用Python制作一个简单的文本RPG,我偶尔会出错,但不是每次都会

有时,当我通过序列,进入战斗,它会给我以下错误:

UnboundLocalError: local variable referenced before assignment

错误总是源于fightScreen()函数中的第101行:

enemy["level"] = player["level"]
我已经在Google上搜索了Stack Overflow,发现函数试图重新定义变量而不是使用以前的变量是有问题的,但在我的例子中,变量(字典)是在函数本身内部定义的

我不明白是什么导致了它,尤其是为什么它只是偶尔发生

最简单的例子(我认为这部分可能与问题有关):

这是完整的代码

import re
import random
import os

#player values
player = {
  "name" : "player",
  "level" : 1,
  "ATK" : 5,
  "DEF" : 5,
  "CurHP" : 10,
  "MaxHP" : 10,
  "CurINV" : 0,
  "MaxINV" : 20
}

#predefined variables
loop_i = 1
answer_yes = {'yes', 'y'}
answer_no = {'no', 'n'}
go_world = {'world', 'w'}
go_home = {'home', 'h'}
go_church = {'church', 'c'}
go_blacksmith = {'blacksmith', 'b'}
go_return = {'return', 'run', 'r'}
go_fight = {'fight', 'f'}

#defined functions for input
#ask a question and filter answer from non-letters and spaces
def questionAsked(question):
  inputRaw = input(question + ':')
  inputFiltered = re.sub('[^a-zA-Z0-9]+', '', inputRaw)
  return inputFiltered

def cls():
  #os.system('cls' if os.name=='nt' else 'clear')
  print('\n' * 30)

def playerStatus():
  print ("ATK ",player["ATK"]," | DEF ",player["DEF"]," | HP ",player["CurHP"],"/",player["MaxHP"]," | INV ",player["CurINV"],"/",player["MaxINV"]," | LV",player["level"],sep='')

def randomEnemy():
  monsters = ['Goblin','Slime']
  random_enemy = random.choice(monsters)
  return random_enemy

# screens-------------------------
#enemy prints
def printGoblin():
  print ("--------------------[FIGHT]-------------------")
  print ("|                .                            |")
  print ("|               |                  | .        |")
  print ("|              |                  |//         |")
  print ("|             |  \       /       /  /         |")
  print ("|             |___\     /____  /   /          |")
  print ("|            | \°_\     /°__/ /   /           |")
  print ("|            '               |  /             |")
  print ("|             |   (° °)       -               |")
  print ("|              | _________    |               |")
  print ("|               ||ˇˇˇˇˇˇˇ|   .|               |")
  print ("|               | -------   |                 |")
  print ("|                |_________|                  |")
  print ("|_____________________________________________|")

def printSlime():
  print ("--------------------[FIGHT]-------------------")
  print ("|                       ______                |")
  print ("|                ______/      \_              |")
  print ("|              _/               \             |")
  print ("|             /    \     /       \_           |")
  print ("|            /    0       0        \          |")
  print ("|           /                       \         |")
  print ("|           /        ____            |        |")
  print ("|          /                         |        |")
  print ("|          /                          \       |")
  print ("|         /____________________________\      |")
  print ("|                                             |")
  print ("|                                             |")
  print ("|_____________________________________________|")

# fighting -----------------------
def fightScreen():
  if randomEnemy() == "Goblin":
    enemy = { #GOBLIN
      "name" : "Goblin",
      "level" : 1,
      "ATK" : 2,
      "DEF" : 2,
      "CurHP" : 5,
      "MaxHP" : 5
    }
  elif randomEnemy() == "Slime":  
    enemy = { #SLIME
      "name" : "Slime",
      "level" : 1,
      "ATK" : 1,
      "DEF" : 3,
      "CurHP" : 5,
      "MaxHP" : 5
    }
  enemy["level"] = player["level"]
  enemy["ATK"] = (enemy["level"] * enemy["ATK"])
  enemy["DEF"] = (enemy["level"] * enemy["DEF"])
  enemy["MaxHP"] = (enemy["level"] * enemy["MaxHP"])
  enemy["CurHP"] = enemy["MaxHP"]
  playerStatus()
  if enemy['name'] == "Goblin": #If enemy is GOBLIN
    printGoblin()
    print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
    print ("-----------------------------------------------")
    while enemy["CurHP"] > 0:
      userInput = questionAsked("What will you do?").lower()
      if userInput in go_fight:
        cls()
        printGoblin()
        print("You dealt ", (player["ATK"] - enemy["DEF"]) ," damage", sep='')
        enemy["CurHP"] = enemy["CurHP"] - (player["ATK"] - enemy["DEF"])
        if enemy["CurHP"] <= 0:
          print ("You won!")
          input("Press ENTER to go back")
          cls()
          Main()
        else:
          input("Press ENTER to continue")
          cls()
          printGoblin()
          print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
          print ("-----------------------------------------------")
      elif userInput in go_return:
        cls()
        Main()
        break

  elif enemy['name'] == "Slime": #If enemy is SLIME
    printSlime()
    print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
    print ("-----------------------------------------------")
    while enemy["CurHP"] > 0:
      userInput = questionAsked("What will you do?").lower()
      if userInput in go_fight:
        cls()
        printSlime()
        print("You dealt ", (player["ATK"] - enemy["DEF"]) ," damage", sep='')
        enemy["CurHP"] = enemy["CurHP"] - (player["ATK"] - enemy["DEF"])
        if enemy["CurHP"] <= 0:
          print ("You won!")
          input("Press ENTER to go back")
          cls()
          Main()
        else:
          input("Press ENTER to continue")
          cls()
          printSlime()
          print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
          print ("-----------------------------------------------")
      elif userInput in go_return:
        cls()
        Main()
        break

def forestScreen():
  playerStatus()
  print ("--------------------[Forest]-------------------")
  print ("|  *      *      **  |  |  * **   **    **    |")
  print ("| * *      *    **   |  |**    **   *    **   |")
  print ("|  *     ***   *    |  |*        *   *     ** |")
  print ("|   *    __________________________  *     ** |")
  print ("|    |  §                          §      *   |")
  print ("|    |_ §   You've encountered a   §      *   |")
  print ("|       §         Monster!         §      **  |")
  print ("|       § Fight(f)        Run(r)   §        * |")
  print ("|       §__________________________§          |")
  print ("| **       *   *    |  |    **                |")
  print ("|   **      | |    |  |   **  ***  ***      **|")
  print ("|     *     |_|   |  |   *      **    *    *  |")
  print ("|_____________________________________________|")
  print ("Fight (f) | Run (r)")
  print ("-----------------------------------------------")
  userInput = questionAsked("What will you do?").lower()
  if userInput in go_fight:
    cls()
    fightScreen()
  elif userInput in go_return: 
    print ('coward')
    cls()
    Main()

def townScreen():
  playerStatus()
  print ("--------------------[Town]---------------------")
  print ("|       +                       **       |*   |")
  print ("|      / \ Church         Home           |    |")
  print ("|     /   \          /////////\           | **|")
  print ("|    /     \    * *  |_____||_|           | * |")
  print ("| l==|°   °|         *             World _|___|")
  print ("| |__|_||__|          *               => _____|")
  print ("|                                         |   |")
  print ("|                           ##             |  |")
  print ("|           Blacksmith    ###               | |")
  print ("|   * *    //////////\  __#                 | |")
  print ("|   *      |         |__||        *         | |")
  print ("|          |_||______|___|         **      | *|")
  print ("|__________________________________________|__|")
  print ("  Info: Player(p) | Stats (s) | Inventory (i)")
  print ("-----------------------------------------------")
  userInput = questionAsked("Where do you want to go?").lower()
  return userInput

# Main executor, menu ------------------
def Main():
  while loop_i > 0:
    if townScreen() in go_world:
      print('Going to world...')
      cls()
      forestScreen()
      break
    elif townScreen() in go_home:
      print('Going home...')
    elif townScreen() in go_church:
      print('Going to church...')
    elif townScreen() in go_blacksmith:
      print('Going to blacksmith...')  
    else:
      print('What?')

# Sequence start-----------------------------------------------------  
while loop_i > 0:
  userInput = questionAsked("Start (Y/N)?").lower()
  if userInput in answer_yes:
    print ("Okay, let's do it")
    break;
  elif userInput in answer_no:
    print ("That's too bad")
    break;
  else:
    print ('What?')
  print("So your answer is " + userInput + ".")
cls()
Main()
重新导入
随机输入
导入操作系统
#玩家价值观
玩家={
“姓名”:“玩家”,
"一级",,
“ATK”:5,
“DEF”:5,
“CurHP”:10,
“MaxHP”:10,
“CurINV”:0,
“MaxINV”:20
}
#预定义变量
循环i=1
回答_yes={'yes','y'}
答案_no={'no',n'}
go_world={'world','w'}
回家={'home','h'}
go_church={'church','c'}
go_铁匠={'blacksmith','b'}
go_return={'return','run','r'}
去战斗={'fight','f'}
#为输入定义的函数
#提问并从非字母和空格中筛选答案
提问(问题):
inputRaw=输入(问题+':')
inputFiltered=re.sub(“[^a-zA-Z0-9]+”,“,inputRaw)
返回输入过滤
def cls():
#os.system('cls'如果os.name=='nt'否则'clear')
打印('\n'*30)
def playerStatus():
打印(“ATK”、玩家[“ATK”]、“| DEF”、玩家[“DEF”]、“|HP”、玩家[“CurHP”]、“/”、玩家[“MaxHP”]、“|INV”、玩家[“CurINV”]、“/”、玩家[“MaxINV”]、“|LV”、玩家[“level”]、九月=”)
def random敌人():
怪物=['妖精','粘液']
随机敌人=随机选择(怪物)
回击敌人
#屏风-------------------------
#敌方指纹
def printGoblin():
打印(“-------------[战斗]--------------”)
打印(“|.|”)
打印(“| | |.|”)
打印(“| | |/|”)
打印(“| | \//|”)
打印(“| | uuuuuuuuuuuuuuuuuuuuuuuuuuu/|”)
打印(“||\°| \/°|//”)
打印(“|”|/|”)
打印(“| |(°)-|”)
打印(“||||||||||”)
打印(“| | | | |.| |”)
打印(“| |--------| |”)
打印(“||||||||||”)
打印(“|uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu124;”)
def printSlime():
打印(“-------------[战斗]--------------”)
打印(“|uuuuuuuuuuuuuuu124;”)
打印(“|uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
打印(“||/\|”)
打印(“|/\/\ \ |”)
打印(“|/0\|”)
打印(“|/\ |”)
打印(“|/| | | |”)
打印(“|/| |”)
打印(“|/\ |”)
打印(“|/uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
打印(“| |”)
打印(“| |”)
打印(“|uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu124;”)
#战斗-----------------------
def fightScreen():
如果您的敌人()=“地精”:
敌人={#地精
“名字”:“地精”,
"一级",,
“ATK”:2,
“DEF”:2,
“CurHP”:5,
“最大HP”:5
}
elif randomTowner()=“粘液”:
敌人={#粘液
“名称”:“粘液”,
"一级",,
“ATK”:1,
“DEF”:3,
“CurHP”:5,
“最大HP”:5
}
敌人[“等级”]=玩家[“等级”]
敌人[“ATK”]=(敌人[“等级”]*敌人[“ATK”])
敌人[“防御”]=(敌人[“等级”]*敌人[“防御”])
敌人[“最大生命”]=(敌人[“等级”]*敌人[“最大生命”])
敌人[“CurHP”]=敌人[“MaxHP”]
playerStatus()
如果敌人['name']=“地精”:#如果敌人是地精
印地魔()
打印(“[”,敌人[“名称”],“,LV”,敌人[“等级”],“生命”,敌人[“电流”],“/”,敌人[“最大生命”],“],“战斗(f);“奔跑(r)”,九月=”)
打印(“----------------------------------------------------”)
当敌人[“CurHP”]>0时:
userInput=QuestionAsquired(“您将做什么?”)。lower()
如果用户在go_fight中输入:
cls()
印地魔()
打印(“你发的”,“玩家[“ATK”]-敌人[“DEF”],“伤害”,sep=”)
敌人[“CurHP”]=敌人[“CurHP”]-(玩家[“ATK”]-敌人[“DEF”])
如果敌人[“CurHP”]0:
userInput=QuestionAsquired(“您将做什么?”)。lower()
如果用户在go_fight中输入:
cls()
打印泥()
打印(“你发的”,“玩家[“ATK”]-敌人[“DEF”],“伤害”,sep=”)
敌人[“CurHP”]=敌人[“CurHP”]-(玩家[“ATK”]-敌人[“DEF”])
如果敌人[“CurHP”]0:
如果go_world中的townScreen():
打印(‘走向世界…’)
cls()
forestScreen()
打破
go_home中的elif townScreen():
打印(‘回家……’)
elif townScreen()在go_教堂:
打印(‘去教堂……’)
elif townScreen()在go_blacksmith中:
打印(‘去铁匠……’)
其他:
打印(‘什么?’)
#序列开始------------------------------------------
当循环i>0时:
userInput=QuestionAsquired(“开始(Y/N)”)。下()
如果回答中的用户输入为“是”:
打印(“好的,我们开始吧”)
打破
elif用户在答案中输入\u编号:
打印(“那太糟糕了”)
B
player = {
  "name" : "player",
  "level" : 1,
  "ATK" : 5,
  "DEF" : 5,
  "CurHP" : 10,
  "MaxHP" : 10,
  "CurINV" : 0,
  "MaxINV" : 20
}

def randomEnemy():
  monsters = ['Goblin','Slime']
  random_enemy = random.choice(monsters)
  return random_enemy

def fightScreen():
  if randomEnemy() == "Goblin":
    enemy = { #GOBLIN
      "name" : "Goblin",
      "level" : 1,
      "ATK" : 2,
      "DEF" : 2,
      "CurHP" : 5,
      "MaxHP" : 5
    }
  elif randomEnemy() == "Slime":  
    enemy = { #SLIME
      "name" : "Slime",
      "level" : 1,
      "ATK" : 1,
      "DEF" : 3,
      "CurHP" : 5,
      "MaxHP" : 5
    }
  enemy["level"] = player["level"]
  enemy["ATK"] = (enemy["level"] * enemy["ATK"])
  enemy["DEF"] = (enemy["level"] * enemy["DEF"])
  enemy["MaxHP"] = (enemy["level"] * enemy["MaxHP"])
  enemy["CurHP"] = enemy["MaxHP"]
  playerStatus()
import re
import random
import os

#player values
player = {
  "name" : "player",
  "level" : 1,
  "ATK" : 5,
  "DEF" : 5,
  "CurHP" : 10,
  "MaxHP" : 10,
  "CurINV" : 0,
  "MaxINV" : 20
}

#predefined variables
loop_i = 1
answer_yes = {'yes', 'y'}
answer_no = {'no', 'n'}
go_world = {'world', 'w'}
go_home = {'home', 'h'}
go_church = {'church', 'c'}
go_blacksmith = {'blacksmith', 'b'}
go_return = {'return', 'run', 'r'}
go_fight = {'fight', 'f'}

#defined functions for input
#ask a question and filter answer from non-letters and spaces
def questionAsked(question):
  inputRaw = input(question + ':')
  inputFiltered = re.sub('[^a-zA-Z0-9]+', '', inputRaw)
  return inputFiltered

def cls():
  #os.system('cls' if os.name=='nt' else 'clear')
  print('\n' * 30)

def playerStatus():
  print ("ATK ",player["ATK"]," | DEF ",player["DEF"]," | HP ",player["CurHP"],"/",player["MaxHP"]," | INV ",player["CurINV"],"/",player["MaxINV"]," | LV",player["level"],sep='')

def randomEnemy():
  monsters = ['Goblin','Slime']
  random_enemy = random.choice(monsters)
  return random_enemy

# screens-------------------------
#enemy prints
def printGoblin():
  print ("--------------------[FIGHT]-------------------")
  print ("|                .                            |")
  print ("|               |                  | .        |")
  print ("|              |                  |//         |")
  print ("|             |  \       /       /  /         |")
  print ("|             |___\     /____  /   /          |")
  print ("|            | \°_\     /°__/ /   /           |")
  print ("|            '               |  /             |")
  print ("|             |   (° °)       -               |")
  print ("|              | _________    |               |")
  print ("|               ||ˇˇˇˇˇˇˇ|   .|               |")
  print ("|               | -------   |                 |")
  print ("|                |_________|                  |")
  print ("|_____________________________________________|")

def printSlime():
  print ("--------------------[FIGHT]-------------------")
  print ("|                       ______                |")
  print ("|                ______/      \_              |")
  print ("|              _/               \             |")
  print ("|             /    \     /       \_           |")
  print ("|            /    0       0        \          |")
  print ("|           /                       \         |")
  print ("|           /        ____            |        |")
  print ("|          /                         |        |")
  print ("|          /                          \       |")
  print ("|         /____________________________\      |")
  print ("|                                             |")
  print ("|                                             |")
  print ("|_____________________________________________|")

# fighting -----------------------
def fightScreen():
  if randomEnemy() == "Goblin":
    enemy = { #GOBLIN
      "name" : "Goblin",
      "level" : 1,
      "ATK" : 2,
      "DEF" : 2,
      "CurHP" : 5,
      "MaxHP" : 5
    }
  elif randomEnemy() == "Slime":  
    enemy = { #SLIME
      "name" : "Slime",
      "level" : 1,
      "ATK" : 1,
      "DEF" : 3,
      "CurHP" : 5,
      "MaxHP" : 5
    }
  enemy["level"] = player["level"]
  enemy["ATK"] = (enemy["level"] * enemy["ATK"])
  enemy["DEF"] = (enemy["level"] * enemy["DEF"])
  enemy["MaxHP"] = (enemy["level"] * enemy["MaxHP"])
  enemy["CurHP"] = enemy["MaxHP"]
  playerStatus()
  if enemy['name'] == "Goblin": #If enemy is GOBLIN
    printGoblin()
    print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
    print ("-----------------------------------------------")
    while enemy["CurHP"] > 0:
      userInput = questionAsked("What will you do?").lower()
      if userInput in go_fight:
        cls()
        printGoblin()
        print("You dealt ", (player["ATK"] - enemy["DEF"]) ," damage", sep='')
        enemy["CurHP"] = enemy["CurHP"] - (player["ATK"] - enemy["DEF"])
        if enemy["CurHP"] <= 0:
          print ("You won!")
          input("Press ENTER to go back")
          cls()
          Main()
        else:
          input("Press ENTER to continue")
          cls()
          printGoblin()
          print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
          print ("-----------------------------------------------")
      elif userInput in go_return:
        cls()
        Main()
        break

  elif enemy['name'] == "Slime": #If enemy is SLIME
    printSlime()
    print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
    print ("-----------------------------------------------")
    while enemy["CurHP"] > 0:
      userInput = questionAsked("What will you do?").lower()
      if userInput in go_fight:
        cls()
        printSlime()
        print("You dealt ", (player["ATK"] - enemy["DEF"]) ," damage", sep='')
        enemy["CurHP"] = enemy["CurHP"] - (player["ATK"] - enemy["DEF"])
        if enemy["CurHP"] <= 0:
          print ("You won!")
          input("Press ENTER to go back")
          cls()
          Main()
        else:
          input("Press ENTER to continue")
          cls()
          printSlime()
          print ("[",enemy["name"], ", LV", enemy["level"]," | HP ",enemy["CurHP"], "/",enemy["MaxHP"],"] ", "Fight (f) | Run (r)", sep='')
          print ("-----------------------------------------------")
      elif userInput in go_return:
        cls()
        Main()
        break

def forestScreen():
  playerStatus()
  print ("--------------------[Forest]-------------------")
  print ("|  *      *      **  |  |  * **   **    **    |")
  print ("| * *      *    **   |  |**    **   *    **   |")
  print ("|  *     ***   *    |  |*        *   *     ** |")
  print ("|   *    __________________________  *     ** |")
  print ("|    |  §                          §      *   |")
  print ("|    |_ §   You've encountered a   §      *   |")
  print ("|       §         Monster!         §      **  |")
  print ("|       § Fight(f)        Run(r)   §        * |")
  print ("|       §__________________________§          |")
  print ("| **       *   *    |  |    **                |")
  print ("|   **      | |    |  |   **  ***  ***      **|")
  print ("|     *     |_|   |  |   *      **    *    *  |")
  print ("|_____________________________________________|")
  print ("Fight (f) | Run (r)")
  print ("-----------------------------------------------")
  userInput = questionAsked("What will you do?").lower()
  if userInput in go_fight:
    cls()
    fightScreen()
  elif userInput in go_return: 
    print ('coward')
    cls()
    Main()

def townScreen():
  playerStatus()
  print ("--------------------[Town]---------------------")
  print ("|       +                       **       |*   |")
  print ("|      / \ Church         Home           |    |")
  print ("|     /   \          /////////\           | **|")
  print ("|    /     \    * *  |_____||_|           | * |")
  print ("| l==|°   °|         *             World _|___|")
  print ("| |__|_||__|          *               => _____|")
  print ("|                                         |   |")
  print ("|                           ##             |  |")
  print ("|           Blacksmith    ###               | |")
  print ("|   * *    //////////\  __#                 | |")
  print ("|   *      |         |__||        *         | |")
  print ("|          |_||______|___|         **      | *|")
  print ("|__________________________________________|__|")
  print ("  Info: Player(p) | Stats (s) | Inventory (i)")
  print ("-----------------------------------------------")
  userInput = questionAsked("Where do you want to go?").lower()
  return userInput

# Main executor, menu ------------------
def Main():
  while loop_i > 0:
    if townScreen() in go_world:
      print('Going to world...')
      cls()
      forestScreen()
      break
    elif townScreen() in go_home:
      print('Going home...')
    elif townScreen() in go_church:
      print('Going to church...')
    elif townScreen() in go_blacksmith:
      print('Going to blacksmith...')  
    else:
      print('What?')

# Sequence start-----------------------------------------------------  
while loop_i > 0:
  userInput = questionAsked("Start (Y/N)?").lower()
  if userInput in answer_yes:
    print ("Okay, let's do it")
    break;
  elif userInput in answer_no:
    print ("That's too bad")
    break;
  else:
    print ('What?')
  print("So your answer is " + userInput + ".")
cls()
Main()
def fightScreen():
  if randomEnemy() == "Goblin":
    enemy = …
  elif randomEnemy() == "Slime":  
    enemy = …
  enemy["level"] = player["level"]
def fightScreen():
  enemyName = randomEnemy()
  if enemyName == "Goblin":
    enemy = …
  elif enemyName == "Slime":  
    enemy = …
def fightScreen():
  if randomEnemy() == "Goblin":
    enemy = …
  else:
    enemy = …
…
class Goblin(object):
    def __init__(self):
        self.name = "Goblin"
        self.level = 1
        self.ATK = 2
        self.DEF = 2
        self.curHP = 5
        self.maxHP = 5

    def print(self):
      print ("--------------------[FIGHT]-------------------")
      print ("|                .                            |")
      print ("|               |                  | .        |")
      print ("|              |                  |//         |")
      print ("|             |  \       /       /  /         |")
      print ("|             |___\     /____  /   /          |")
      print ("|            | \°_\     /°__/ /   /           |")
      print ("|            '               |  /             |")
      print ("|             |   (° °)       -               |")
      print ("|              | _________    |               |")
      print ("|               ||ˇˇˇˇˇˇˇ|   .|               |")
      print ("|               | -------   |                 |")
      print ("|                |_________|                  |")
      print ("|_____________________________________________|")

        …

class Slime(object):
    def __init__(self)
        self.name = "Slime"
        self.level = 1
        self.ATK = 1
        self.DEF = 3
        self.curHP = 5
        self.maxHP = 5
    def print(self):
      print ("--------------------[FIGHT]-------------------")
      print ("|                       ______                |")
      print ("|                ______/      \_              |")
      print ("|              _/               \             |")
      print ("|             /    \     /       \_           |")
      print ("|            /    0       0        \          |")
      print ("|           /                       \         |")
      print ("|           /        ____            |        |")
      print ("|          /                         |        |")
      print ("|          /                          \       |")
      print ("|         /____________________________\      |")
      print ("|                                             |")
      print ("|                                             |")
      print ("|_____________________________________________|")


def randomEnemy():
  monsters = [Goblin, Slime]
  random_enemy = random.choice(monsters)
  return random_enemy() # instantiate the enemy here

# fighting -----------------------
def fightScreen():
  enemy = randomEnemy()
  …