【问题标题】:Variable defined in function not callable by another function? Jython函数中定义的变量不能被另一个函数调用?杰通
【发布时间】:2018-09-27 19:41:55
【问题描述】:

谁能告诉我这段代码有什么问题。我必须遵循这个类的指导方针,所以他们想要它,所以你的每周工资是由一个“calc_weekly_wages”函数计算的,然后一个“main”函数调用另一个函数并在一个句子中打印它,而不仅仅是一个数字输出。我收到一个错误,提示我的“finalPay”变量未定义,有人可以帮忙吗?

hoursWorked = requestInteger("Enter weekly hours worked")
hourlyWage = requestNumber("Enter your hourly wage")

def calc_weekly_wages():
  if hoursWorked <= 40:
    finalPay = hoursWorked * hourlyWage
    return (finalPay)
  elif hoursWorked > 40:
    finalPay = 40 * hourlyWage + (hoursWorked - 40)*(hourlyWage * 1.5)
    return finalPay

def main():
  calc_weekly_wages()
  print ("Wages for " + str(hoursWorked) + "at $" + str(hourlyWage) + "is " + str(finalPay))

main()

【问题讨论】:

  • 你需要存储calc_weekly_wages()返回的值,例如finalPayOutput = calc_weekly_wages()。然后在您的打印语句中,改为调用该变量:"is " + str(finalPayOutput))。或者,您可以将 finalPay 定义为顶部的字段,就像使用 hoursWorked 一样:finalPay = calc_weekly_wages()
  • 哦,天哪,我太笨了,谢谢伙计,它工作正常!

标签: python function jython


【解决方案1】:

是的,finalPay 确实超出了执行print 的行的范围。函数的局部变量在该函数之外是不可访问的。

幸运的是,finalPaycalc_weekly_wages() 返回。因此,您可以在同名变量中捕获返回值:

finalPay = calc_weekly_wages()

这可以解决问题。或者,您可以用对您的函数的调用替换有问题的对 finalPay 的引用:

print ("Wages for " + str(hoursWorked) + "at $" + str(hourlyWage) + "is " + str(calc_weekly_wages()))

这样也行。

【讨论】:

    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    相关资源
    最近更新 更多