2015-10-30 5 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

Или сделайте это надлежащим образом и получите функции 'return'. –

+0

Итак, я бы добавил значения G, которые я использовал в def doDeductions(): вместо функции global вместо G? – UnseenMadness

ответ

0

Это должно работать: я ставлю %2f где переменная должна идти как форма строки форматирования. %2f вставляет в строку поплавок, округленный до 2 десятичных знаков. Тогда вы бы сделали %("Variable"). «Variable» - это число int или float, которое невозможно вставить в строку, не становясь строкой. Другой способ превратить целое число или float в строку будет str («переменная»), но я нахожу форматирование строк более аккуратным. вы бы сделали global "variableName", чтобы сделать переменную global, поэтому вы можете использовать ее вне функции.

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():», но оставите назначения переменных и отмените их.

Смежные вопросы