在python中,如何调用在if语句中指定的变量?

在python中,如何调用在if语句中指定的变量?,python,python-3.x,Python,Python 3.x,我正在学习python,我想制作一个脚本,让您计算税后工资。当我试图调用在if语句中指定的变量时,它说 NameError: name 'bruto1' is not defined. 代码如下: if bruto<20142 and bruto>0: bruto1 = (bruto*0.3655) netto = (bruto - bruto1) 如果bruto0: 布鲁托1=(布鲁托*0.3655) 内托=(布鲁托-布鲁托1) 多亏了konserw,我已经发现了这

我正在学习python,我想制作一个脚本,让您计算税后工资。当我试图调用在if语句中指定的变量时,它说

NameError: name 'bruto1' is not defined.
代码如下:

if bruto<20142 and bruto>0:
    bruto1 = (bruto*0.3655)

netto = (bruto - bruto1)
如果bruto0:
布鲁托1=(布鲁托*0.3655)
内托=(布鲁托-布鲁托1)

多亏了konserw,我已经发现了这个问题。在bruto为<0或>20142的事件中,您试图访问不存在的bruto1变量(因为if语句中的block未执行)

您有两种可能-要么从定义bruto1的默认值开始,例如0,这样每当您尝试访问该变量时,它都会有一些值;或者确保程序中所有可能的执行路径都会导致为该变量赋值,例如使用if…else

brutto1 = 0
if brutto < 20142 and bruto > 0:
    brutto1 = (brutto * 0.3655)

netto = (brutto - brutto1)
brutto1=0
如果bruto<20142且bruto>0:
布鲁托1=(布鲁托*0.3655)
netto=(brutto-brutto1)
我认为更类似Python的方式是在一行中对变量进行条件赋值,例如:

netto = (brutto - (brutto*0.3655)) if brutto < 20142 else (<place another calculation here>)
netto=(brutto-(brutto*0.3655))如果brutto<20142其他()
编辑: 修正了变量名的输入错误


另外,我建议使用pylint来捕捉这种气味(或者像pycharm这样的好IDE,它会在指定变量之前强调输入错误和使用)

如果if语句的计算结果为
False
则变量将不存在,您可以先初始化它,也可以使用
else
块脚本中没有
nameofvariable
。如果没有它,我们怎么能找到你的问题。@Simon我想他是指
bruto1
,它在
if
语句中被实例化。这里不需要预先赋值。OP需要注意的唯一一件事是他的陈述是否是错误的。@scharette-在这个特定的例子中是的,因为它是多么简单,对于更复杂的控制流不一定是正确的。例如,如果在if或else块中有可以抛出异常(e.x.除以0)的操作,在以后的过程中会被静音,但会跳过将值赋值给bruto1…对我来说,这比在else块中进行相同赋值更好,但这取决于您的视图;)