未定义nameError名称

时间:2017-11-26 03:12:04

标签: python

您好我正在尝试创建一个程序,您可以在其中输入您工作的小时数和每小时的费率。超过40的每小时计算为一段时间(x1.5)。

我在第11行得到一个nameError。(ganancias =(horas * tarifa) NameError:name' horas'未定义)

我不明白为什么因为我定义了" horas"在第二行。谢谢你的时间!

def calculo_salario() :
  horas = float(input("input salario: "))
  tarifa = float(input("input tarifa: "))

def sums(a,b):
  sum = a + b
  return sum

calculo_salario()

ganancias = (horas * tarifa)
preOt = (40 * tarifa)



if horas > 40 :
    overtimeHr = horas - 40
    overtimeAm = (overtimeHr * tarifa) * 1.5
    gananciasOt = sums(overtimeAm, preOt)
    print(gananciasOt)

else :
    print(ganancias)

3 个答案:

答案 0 :(得分:0)

您的问题在horas的范围内。您在方法horas中将calculo_salario定义为局部变量。这意味着变量只能在方法定义中使用,而不能在外部。

我建议在没有任何方法的情况下启动你的程序,然后通过在这些方法中封装逻辑来弄清楚它是如何工作的。

horas = float(input("input salario: "))
tarifa = float(input("input tarifa: "))

ganancias = (horas * tarifa)
preOt = (40 * tarifa)

if horas > 40 :
    overtimeHr = horas - 40
    overtimeAm = (overtimeHr * tarifa) * 1.5
    gananciasOt = overtimeAm + preOt
    print(gananciasOt)

else :
    print(ganancias)

上面的代码应该在没有任何问题的情况下运行,现在所有变量都在脚本的全局范围内。

答案 1 :(得分:0)

检查变量范围。目前,horastarifacalculo_salario()完成后即被删除。

要解决此问题,一个选项是返回值。当然,在这个特定的例子中,你根本不需要一个方法,但那不是重点。

def calculo_salario() :
  horas = float(input("input salario: "))
  tarifa = float(input("input tarifa: "))
  return (horas, tarifa)

...

(horas, tarifa) = calculo_salario()

...

答案 2 :(得分:0)

我使用jhpratt建议使用return将这些值分配给" calculo_salario()" 这是我最后的工作代码

def calculo_salario() :
  horas = float(input("input salario: "))
  tarifa = float(input("input tarifa: "))
  return (horas, tarifa)


(horas, tarifa) = calculo_salario()
ganancias = (horas * tarifa)
preOt = (40 * tarifa)



if horas > 40 :
    overtimeHr = horas - 40
    overtimeAm = (overtimeHr * tarifa) * 1.5
    gananciasOt = (overtimeAm + preOt)
    print("salario: " , gananciasOt)

else :
    print("salario:" , ganancias)