您好我正在尝试创建一个程序,您可以在其中输入您工作的小时数和每小时的费率。超过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)
答案 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)
检查变量范围。目前,horas
和tarifa
在calculo_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)