2015-10-30 44 views
-3

您好我最近被要求做一个任务,我必须创建一个python程序,要求用户输入他们的毛支付,然后根据扣除数量计算净支付。扣除应表示为全球常数,并且该计划应包含许多功能。 我没有问题做任务我似乎有全局常量的困难,我不断收到一个错误,说我的函数没有定义。这是我想出迄今: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() 
+0

您在函数内定义了变量,这意味着它只能在该函数内访问。如果你想在其他地方使用它,可以在任何你想使用它的地方声明它是全局的('global G')。 – Inkblot

+4

或者按照正确的方式进行操作,并具有“返回”值功能。 –

+0

那么,我将用于全局G的def doDeductions()函数中的G值代替吗? – UnseenMadness

回答

0

这应该工作: 我把%2f您的变量应该作为字符串格式化的形式。 %2f将舍入到小数点后两位的浮点值插入到字符串中。那么你会做%("Variable")。 “变量”是int或浮点数,不能插入字符串而不成为字符串。另一种将整数或浮点数转换为字符串的方法是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") 

你会在底部插入所有打印已调用的功能或在使用之前,并会在你的程序导致错误的变量将被称为后。

+0

完美的作品!你介意给我解释为什么你在%2f中加入了吗?非常感谢。 – UnseenMadness

+0

@MorganThrapp听起来很公平,我只是编辑它添加解释。 –

+0

@UnseenMadness我添加了一个解释。 –

0

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

您可以像这样使用关键字'global':'global variable_name'来创建可在任何位置访问的局部变量(在函数中定义)。

此刻,你正在做的和你的任务所要求的完全相反。它希望你使用全局变量,但是你要在函数中定义它们,使它们成为本地的。解决这个问题的简单方法是在函数之外定义这些变量;在这种情况下,除去“def doDeductions():”,但保留变量赋值并取消它们。