2014-10-30 77 views
0

你好,这是我们得到混淆全局常量(蟒蛇)

问题“写入其中要求用户输入他们的工资总额Python程序,然后计算基于以下扣减净工资; PRSI 3%, 健康贡献4% PAYE 41% USC 7% 提示:扣减应被表示为全局常量程序应包括多种功能,即一个函数来显示的指示用户;一个从用户获取输入并随后调用第三个函数的函数计算净工资(即工资总额 - 扣除)”

这里是我的心血

def instructions(): 
    print ("Hello, and welcome to the programme") 


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() 

这种‘doDeductions’是行不通的,我知道这是错的,但我不知道为什么

任何帮助将不胜感激,

感谢

+0

什么不工作?您是否收到错误,或者您的输出不是您预期的/想要的? – furkle 2014-10-30 19:03:08

+0

抱歉应该提到,运行时出错是 – CFC 2014-10-30 19:04:38

+1

@JGCFC如果你需要帮助,你应该更加详细。如果有人要求您提供错误消息,而不是回答“是”,您可能会提供(完整)错误消息,最好在问题中(通过编辑)。 – glglgl 2014-10-30 19:19:33

回答

1

的问题是,你不保存价值,卫生,收费,社会或网络的任何地方,但你的函数中。这些值EXI st仅用于doDeductions()方法的持续时间,并且仅在该范围内。当你到达print()语句链时,它们不存在,这是程序不能运行的原因之一 - 你要求它打印不存在的对象。

请注意,您也忽略了您的任务的任务之一,即将扣减存储为全局常量。

你应该做的,一类的范围之外,是店全局值:

PRSI = 0.03 
HEALTH_CONTRIBUTION = 0.04 
PAYE = 0.41 
USC = 0.07 

G = 0 
Value = 0 
Health = 0 
Pay = 0 
Social = 0 
Net = 0 

def getOutput(): 
    doDeductions(int(input("Enter gross income: "))) 

def doDeductions(G): 
    global Value, Health, Pay, Social, Net, PRSI, HEALTH_CONTRIBUTION, PAYE, USC 
    Value = G * PRSI 
    Health = G * HEALTH_CONTRIBUTION 
    Pay = G * PAYE 
    Social = G * USC 
    Net = G - Value - Health - Pay - Social 

全球关键字用来说明该变量您在非全局范围内定义的解释应该被分配给全局变量。

虽然这是一个非常丑陋的做法,但类的优点之一是您可以拥有可以使用self.member访问的成员,而不需要每次引用时都调用global。顶部范围内的变量。