名称错误名称未定义

2024-10-06 12:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我正在尝试创建一个程序,你输入多少小时,你的工作率每小时。超过40的每小时计算为随时间(x1.5)。在

我在第11行收到一个名字错误。(加纳西亚=(霍拉斯*塔里法) 名称错误:未定义名称“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)

Tags: 名称inputdef错误时间floatsum小时
3条回答

您的问题属于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)

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

检查变量范围。现在,horas和{}一旦calculo_salario()完成,就会被删除。在

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

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

...

(horas, tarifa) = calculo_salario()

...

我使用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)

相关问题 更多 >