Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未绑定局部错误问题_Python_Windows_Python 3.x - Fatal编程技术网

Python 未绑定局部错误问题

Python 未绑定局部错误问题,python,windows,python-3.x,Python,Windows,Python 3.x,我看过其他关于这方面的帖子,但我是一个初学者,不理解我看过的关于这方面的大多数帖子。如果有人能解释该做什么以及它是如何工作的,我们将不胜感激!这是代码 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 wat

我看过其他关于这方面的帖子,但我是一个初学者,不理解我看过的关于这方面的大多数帖子。如果有人能解释该做什么以及它是如何工作的,我们将不胜感激!这是代码

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('\n' * 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()
导入时间
导入系统
随机输入
完成=错误
天=1
v=2
v2=2
气体=2
gas2=2
#节俭的
dt=0
dt2=0
#饥渴
dh=0
dh2=0
#理智
ds=100
ds2=100
#水
水=5
水2=5
#食物
食物=5
food2=5
def cls():
对于范围(10)内的i:
打印('\n'*100)
title=输入('按ENTER键开始')
cls()
playercount=输入('有多少玩家在玩?'))
def player1():
开始=输入(“”)
目标:在核弹坠落中存活30天。
项目:
-食物
+ 5
-水
+ 5
-防毒面具
-医疗箱
-枪
+1枚弹药
-斧头
-棋盘游戏
幸存者:
-你
''')
cls()
时间。睡眠(2)
虽然没有这样做:
如果dt>5且dt<10:
输入(“你渴了。”)
如果dh>5且dh<10:
输入(“你饿了。”)
如果ds>50且ds<70:
输入(“你开始发疯了!”)
如果dt>15:
输入(“你渴死了”)
sys.exit()
如果dh>15:
输入(“你饿死了!”)
sys.exit()
如果ds<50:
输入(“你疯了!”)
sys.exit()
这里是错误

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
回溯(最近一次呼叫最后一次):
文件“main.py”,第892行,在
player1()
player1中第261行的文件“main.py”
如果dt>5且dt<10:
UnboundLocalError:赋值前引用的局部变量“dt”

这在我的代码中发生过多次。任何提示帮助

调用函数时,如果该函数有一个未通过参数导入或未在其中声明的变量;然后就会出现这样的错误

调用函数
player1()
时,python找不到变量
dt
,因为您已将其声明在试图使用它的范围之外。在带参数的函数中获取
dt
或在
player1()中声明它


对于
ds
dh
变量也要这样做。

在上面显示的代码之前是否有
dt=
语句?是的,我在while循环之外做。当我这样做时,人们说只放我需要的,但我会编辑it@Fiix你在哪里打电话给player1()function@Fiix不,你不是。这里没有调用方。所以我将它从函数中取出并放入if语句中,但出现了相同的错误?不,我的意思是将这些变量的声明放入函数中,以便在函数调用期间,python可以看到它们。或者,如果您希望它们位于函数之外,那么为函数创建一个参数,通过该参数可以获取这些变量,如:-在调用该函数时,将这些变量放入:-player1(ds,dh,dt)