【问题标题】:Global Constants on PythonPython 上的全局常量
【发布时间】:2015-10-30 15:15:23
【问题描述】:

嗨,我最近被要求做一个任务,我必须创建一个 python 程序,要求用户输入他们的总工资,然后根据扣除的数量计算净工资。扣除应该表示为全局常量,并且程序应该包含许多函数。 我做作业没有问题我似乎对全局常量有困难,而且我一直收到一个错误,说我的函数没有定义。到目前为止,这是我想出的:

def instructions():
print ("Hello, welcome to the programme")
print ("Please follow the onscreen instructions")



def getOutput():
    G = int(input("Enter gross income: "))
    return G


def displayBreak():
    print("")
    print("Less deductions")
    print("---------------")



def doDeductions():
    Value=G*.03
    Health=G*.04
    Pay=G*.41
    Social=G*.07
    Net=G-Value-Health-Pay-Social

print("PRSI                    ",Value)
print("Health Contrb.          ",Health)
print("PAYE                    ",Pay)
print("USC                     ",Social)
print("")
print("Net Pay                 ",Net)
print("Programme Complete")



################################################


instructions()

print("")

getOutput()


displayBreak()

print("")

doDeductions()

【问题讨论】:

  • 您在函数内定义了变量,这意味着它只能在该函数内访问。如果您想在其他地方使用它,请将其声明为全局 (global G),无论您想在哪里使用它。
  • 或者以正确的方式进行操作并具有return值的功能。
  • 那么我是否可以将我在 def doDeductions(): function in for global G 中使用的 G 值子化?

标签: python variables constants global python-3.3


【解决方案1】:

这应该有效: 我把%2f 放在你的变量应该作为字符串格式的地方。 %2f 在字符串中插入一个四舍五入到小数点后 2 位的浮点数。然后你会做%("Variable")。 “变量”是整数或浮点数,不能插入字符串而不变成字符串。另一种将整数或浮点数转换为字符串的方法是 str("variable"),但我发现字符串格式更简洁。 你会做global "variableName" 使变量成为全局变量,这样你就可以在函数之外使用它。

def instructions():
    print ("Hello, welcome to the programme")
    print ("Please follow the onscreen instructions")



def getOutput():
    global G
    G = int(input("Enter gross income: "))
    return G


def displayBreak():
    print("")
    print("Less deductions")
    print("---------------")



def doDeductions():
    global Value
    Value=G*.03
    global Health
    Health=G*.04
    global Pay
    Pay=G*.41
    global Social
    Social=G*.07
    global Net
    Net=G-Value-Health-Pay-Social





    ################################################


instructions()

print("")

getOutput()


displayBreak()

print("")

doDeductions()

print("PRSI                    %2f" %(Value))
print("Health Contrb.          %2f" %(Health))
print("PAYE                    %2f" %(Pay))
print("USC                     %2f" %(Social))
print("")
print("Net Pay                 %2f" %(Net))
print("Programme Complete")

您将在调用函数后将所有打印内容插入底部,否则将在使用变量之前调用它们,这会导致程序出错。

【讨论】:

  • 效果很好!您介意向我解释一下您为什么要在 %2f 中添加吗?非常感谢。
  • @MorganThrapp 听起来很公平,我只是编辑了它并添加了解释。
  • @UnseenMadness 我添加了解释。
【解决方案2】:

如果您在代码主体中定义一个变量,它就是一个全局变量。局部变量是在函数中定义的,并且范围有限。这意味着局部变量只能从定义它们的函数内部访问,而全局变量可以在程序中的任何位置访问。

您可以像这样使用关键字“global”:“global variable_name”使局部变量(在函数中定义)可在任何地方访问。

目前,您所做的与您的任务要求的完全相反。它希望您使用全局变量,但您在函数中定义它们,使它们成为局部变量。纠正这个问题的简单方法是在函数之外定义这些变量;在这种情况下,去掉“def doDeductions():”,但保留变量赋值并取消缩进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 2016-05-01
    • 2018-02-25
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多