2013-07-21 1 views
-4

Так что мне нужно, чтобы эта программа добавила все налоги с налога и государственного налога в конце ... Может ли кто-нибудь помочь или дать мне несколько советов? Я изучаю питон в течение последних 3-х недель, но я не получаю накопительную часть:Python Accumulation

for str_employee in range(5): 

     def Name(): 
     strName = input ("Enter your name: ") 
     return strName 

    def hoursworked(): 
     strhours = input ("Enter Total Hours Worked: ") 
     flthours = float(strhours) 
     return flthours 

    def wagerate(): 
     strwage = input ("Enter Wage Rate: $") 
     fltwage = float(strwage) 
     return fltwage 

    currentUser = Name() 
    currentSal = (hoursworked() * wagerate()) 
    fltpercent_08 = float (.08) 
    fltpercent_20 = float (.20) 
    fltfedtax = (currentSal * fltpercent_20) 
    fltstatetax = (currentSal * fltpercent_08) 

    print ("") 
    print ("Your Federal Tax is: $", fltfedtax) 
    print ("Your State Tax is: $", fltstatetax) 
    print ("") 

sum = fltfedtax 
for fltstatetax in range (0): 
    sum = fltfedtax + fltfedtax 

sum2 = fltstatetax 
for fltstatetax in range (0): 
    sum2 = fltstatetax + fltstatetax 

print ("") 
print ("Total Taxes") 
print ("Total Federal Tax is: $", sum) 
print ("Total State Tax is: $", sum2) 
+1

Я не уверен, что делать с этим кодом, прежде всего, вы можете вывести функции из цикла for, поскольку их нужно определить только один раз. Во-вторых, когда я запускаю этот код, он снова запрашивает меня сделать это снова, как в цикле for. Представляет ли это 5 дней недели (пн-пт) для одного и того же человека? следует ли переименовывать имя каждый раз или только финансовую информацию? – AWainb

+1

также термин «сумма» уже используется в python и не должен быть перезаписан. Я собираюсь задуматься над тем, что вы пытаетесь выполнить, и опубликовать его в качестве ответа. Похоже, вы хотите, чтобы один человек запустил приложение, введите свое имя, затем повторно введите свою информацию в 5 раз. Похоже, вы хотите с понедельника по пятницу вместо 0-4 в своем диапазоне. Также похоже, что вы хотите распечатать ежедневные налоговые результаты, и когда все дни будут введены, общая сумма за неделю? Если это правильно, могу ли я предположить, что заработная плата должна быть введена только один раз? Или переменная заработной платы в день? – AWainb

ответ

0

sum = sum + fltfedtax + fltfedtax означает новое значение суммы старого значение + fltfedtax + fltfedtax

То же для sum2.

+0

, как уже упоминалось выше, не используйте 'sum' в качестве имени переменной – AWainb

+0

В его вопросе также предлагается способ добавления всех сумм вместе в конце. sum = sum + fltfedtax + fltfedtax является ненадлежащим, так как он будет двойным fltfedtax без причины. Должна быть сумма = 0; для fedtax в диапазоне (1): sum + = fltfedtax. Также обратите внимание, что его цикл for для этой логики также неверен, диапазон 0 не инициирует ничего, и только последний результат fltfedtax также был бы сохранен, поэтому он добавит только тот же номер, если диапазон был на самом деле выше 1 . – AWainb

1

Более удобный синтаксис для такого рода вещей является:

sum += fltfedtax 
sum += fltstatetax 

+= просто сокращенный, так, например:

a = 1 
a += 1 # a = 2 
+1

Не используйте 'sum' в качестве имени. –

+0

Настоящие факты просто использовали это для OP, но я подумал, что это был более надуманный пример, просто пытающийся прокомментировать соответствующие части кода, но вы абсолютно правы. –

+0

@SlaterTyranus - Понятно, но, как он упомянул в своем вопросе, он только начал изучать python 3 недели назад, так что маловероятно, что он сам это понимает;) – AWainb

0

Исходя из моих предположений, изложенных в моих комментариях к вашему вопросу, вот что я думаю, что вы пытаетесь выполнить. Поскольку информации недостаточно, я добавил еще один вход, чтобы спросить, хотите ли вы добавить новую заработную плату в день или только один раз.

def Name(): 
    #strName = raw_input("Enter your name: ") # use with Python 2.x 
    strName = input("Enter your name: ") # use with Python 3.x 
    print() 
    return strName 

def hoursworked(day=""): 
    #strhours = raw_input("Enter Total Hours Worked on %s: " % (day)) # use with Python 2.x 
    strhours = input("Enter Total Hours Worked on %s: " % (day)) # use with Python 3.x 
    flthours = float(strhours) 
    return flthours 

def wagerate(day=None): 
    if day: 
     prompt = "Enter Wage Rate for %s: $" % (day) 
    else: 
     prompt = "Enter Wage Rate: $" 
    #strwage = raw_input(prompt) # use with Python 2.x 
    strwage = input(prompt) # use with Python 3.x 
    print() 
    return float(strwage) 

def wageonce(): 
    #wage = raw_input("Enter new wage per day? (yes/no): ") # use with Python 2.x 
    wage = input("Enter new wage per day? (yes/no): ") # use with Python 3.x 
    print() 
    if wage == "yes": 
     wage = False 
    elif wage == "no": 
     wage = True 
    return wage 

fltfedlist = [] 
fltstatelist = [] 

days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] 

currentUser = Name() 
wageOnce = wageonce() 

if wageOnce: 
    wage = wagerate() 

for day in days: 
    if wageOnce: 
     currentSal = (hoursworked(day) * wage) 
    else: 
     currentSal = (hoursworked(day) * wagerate()) 
    fltpercent_08 = float (.08) 
    fltpercent_20 = float (.20) 
    fltfedtax = (currentSal * fltpercent_20) 
    fltstatetax = (currentSal * fltpercent_08) 
    fltfedlist.append(fltfedtax) 
    fltstatelist.append(fltstatetax) 

    #print("Name: %s" % (currentUser.title())) 
    print("Day of Week: %s" % (day)) 
    print("Your Federal Tax is: $%0.2f" % (fltfedtax)) 
    print("Your State Tax is: $%0.2f\n" % (fltstatetax)) 

fed_sum = 0 
for fltfedtax in fltfedlist: 
    fed_sum += fltfedtax 

state_sum = 0 
for fltstatetax in fltstatelist: 
    state_sum += fltstatetax 

print ("\nName: %s" % (currentUser.title())) 
print ("Total Federal Tax is: $%0.2f" % (fed_sum)) 
print ("Total State Tax is: $%0.2f" % (state_sum)) 
+0

Или просто 'fed_sum = sum (fltfedlist)' –

+0

Вы правы;) I не играли с Python3, поэтому я не хотел процитировать функцию, которую я не тестировал; если произошли изменения, сделанные как «печать». На самом деле существует множество способов урезать мой пример. Например, классы для входов также не нужны, вы можете просто ввести входные строки в цикл for. ;) Хотя я не хочу слишком много путать с новичком Python coder, и классы только помогают прояснить код. Также использование цикла for также должно помочь ему понять его грамматические ошибки, например «для flxstatetax в диапазоне (0)». – AWainb

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

  • Нет связанных вопросов^_^