Python 3.x 在Python 3中的If-Else语句中获取名称错误

Python 3.x 在Python 3中的If-Else语句中获取名称错误,python-3.x,Python 3.x,我试图用Python编写一个if/else语句,但是我一直得到NameError ld = 2 rd = 0 hd = 1 vhd = 1 if(rd>= 1): rt = (4*rd) + 2 elif(hd>=1 and rd==0): st = (4*hd + 2) elif(ld>=1 and rd==0 and hd==0): lt = (4*ld + 2) elif(ld>=1): lt = 4*ld elif(hd&

我试图用Python编写一个if/else语句,但是我一直得到NameError

ld = 2
rd = 0
hd = 1
vhd = 1

if(rd>= 1):
    rt = (4*rd) + 2

elif(hd>=1 and rd==0):
    st = (4*hd + 2)

elif(ld>=1 and rd==0 and hd==0):
    lt = (4*ld + 2)

elif(ld>=1):
    lt = 4*ld

elif(hd>=1):
    st = hd

elif(vhd>=1):
    spt = vhd

else: 
    print('Error!')

print(spt)
它给了我这个错误,但是我希望它根据公式打印数字4

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-44-4a8714f7f508> in <module>
----> 1 print(spt)

NameError: name 'spt' is not defined
---------------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
在里面
---->1份打印件(spt)
NameError:未定义名称“spt”

在调用前定义
spt

基于变量初始化,调用第二个
elif
条件,但您正在此处打印
spt
变量。您可以直接打印到条件中,而不是分配到变量中。

您需要在顶部声明所有缺少的变量。以下是更正版本:

ld = 2
rd = 0
hd = 1
vhd = 1
lt = 0
rt = 0
st = 0
spt = 0

if(rd>= 1):
    rt = (4*rd) + 2

elif(hd>=1 and rd==0):
    st = (4*hd + 2)

elif(ld>=1 and rd==0 and hd==0):
    lt = (4*ld + 2)

elif(ld>=1):
    lt = 4*ld

elif(hd>=1):
    st = hd

elif(vhd>=1):
    spt = vhd

else:
    print('Error!')

print(lt, rt, st, spt)

您仅在
if
中定义了spt。if
vhd<1
应该有什么值?要在if-else语句之外打印
spt
,您应该在表达式的外侧定义/启动它。与您在顶部执行的相同级别,如
ld
rd
等。最终我希望运行print(lt、rt、st、spt)。您能告诉我如何在if-else中添加所有这些变量吗?打印所有变量有什么意义?有很多if-else-if可以将值分配到变量中。一种在开始时将所有变量初始化为零的方法,但在打印时,您将无法区分这是初始化为零还是计算为零。在python中使用locals()检查是否有变量的另一种方法。