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)