python - Ubundet lokal fejlproblem

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har set andre indlæg om dette, men jeg er en nybegynder og forstår ikke de fleste af de andre, jeg har set om dette. Hvis nogen kunne forklare hvad de skal gøre og hvordan det virker, vil det blive værdsat! Her er koden.


import time
import sys 
import random
done = False
day = 1
v = 2
v2 = 2
gas = 2
gas2 = 2
# thrist
dt = 0
dt2 = 0
# hunger
dh = 0
dh2 = 0
#sanity
ds = 100
ds2 = 100
#water
water = 5
water2 = 5
#food
food = 5
food2 = 5
def cls():
  for i in range(10):
    print('
' * 100)
title = input('Press ENTER to start.')
cls()
playercount = input('How many players are playing?')
def player1():
  start = input('''
  Objective: Survive the nuke drop for 30 days.
  Items: 
    - Food
      + 5
    - Water
      + 5
    - Gas Mask
    - Medkit
    - Gun
      + 1 ammo
    - Axe
    - Board Games
  Survivors:
    - You
  ''')
  cls()
  time.sleep(2)
  while not done:
    if dt > 5 and dt < 10:
      input('You are getting thirsty.')
    if dh > 5 and dh < 10:
      input('You are getting hungry.')
    if ds > 50 and ds < 70:
      input('You are starting to go insane!')
    if dt > 15:
      input('You died of thirst')
      sys.exit()
    if dh > 15:
      input('You died of hunger!')
      sys.exit()
    if ds < 50:
      input('You became insane!')
      sys.exit()


her er fejlen


Traceback (most recent call last):
  File "main.py", line 892, in <module>
    player1()
  File "main.py", line 261, in player1
    if dt > 5 and dt < 10:
UnboundLocalError: local variable 'dt' referenced before assignment


Dette sker flere gange i hele min kode, hvilket hjælper noget!

Bedste reference


Når du kalder en funktion, og hvis den funktion har en variabel, der ikke importeres ind gennem argument eller ikke erklæret inde i den; så sker en sådan fejl.


Når du ringer til din funktion player1(), kunne python ikke finde variablen dt, fordi du har angivet det uden for det område, hvor du forsøger at bruge det. Tag enten dt inde fungere med argument eller erklære det inden for player1() funktionen.


Gør også samme for ds og dh variabler.