2013-07-21 2 views
-4

그래서이 프로그램에 모든 연방세와 주세를 추가해야합니다. 누구든지 도와 주거나 조언을 해줄 수 있습니까? 내가 최근 3 주 동안 파이썬을 배우고했지만, 내가 축적 부분을하지 않습니다되어파이썬 누적

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

또한 "sum"이라는 용어는 이미 파이썬에서 사용되고 있으므로 덮어 쓰면 안됩니다. 나는 당신이 성취하려고 시도하는 것을 추측하여 대답으로 게시 할 것입니다. 한 명의 개인이 앱을 시작하고 이름을 입력 한 다음 5 번에 정보를 다시 입력하는 것처럼 보입니다. 귀하의 범위에서 0-4 대신에 월요일 - 금요일을 원하는 것처럼 보입니다. 그것은 또한 일일 세금 결과에 대한 인쇄물을 원하는 것처럼 보이며, 모든 요일을 입력하면 해당 요일의 총계가 나타 납니까? 이것이 올 바르면 임금 만 한 번 입력해야한다고 생각합니까? 아니면 하루에 임금 변수가 있습니까? – AWainb

답변

0

sum = sum + fltfedtax + fltfedtax 합의 새로운 가치를 의미 이전 값 + fltfedtax + fltfedtax

동일한에게 sum2에 대해. 그런 종류의 물건에 대한

+0

위에서 언급했듯이 'sum'을 변수 이름으로 사용하지 마십시오 – AWainb

+0

그의 질문은 마지막에 모든 합계를 함께 추가하는 방법을 요구합니다. sum = sum + fltfedtax + fltfedtax는 아무 이유없이 fltfedtax를 두 배로하기 때문에 적절하지 않습니다. 합계는 0이어야합니다. 범위 내의 fedax에 대해 (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 - 이해할 만하지만, 그의 질문에서 언급했듯이, 그는 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

당신이 맞습니다;) Python3을 많이 사용하지 않았으므로 테스트하지 않은 함수를 인용하고 싶지는 않습니다. '인쇄'와 같은 변경 사항이있는 경우 내 예제를 정리하는 방법은 실제로 여러 가지가 있습니다. 예를 들어 입력 클래스도 불필요하므로 입력 라인을 for 루프에 넣을 수 있습니다. ;) 초보자 파이썬 코더를 너무 많이 혼동하고 싶지는 않지만 클래스는 코드를 명확히하는 데 도움이됩니다. 또한 for 루프를 사용하면 "flxstatetax for range (0)"와 같은 문법 오류를 이해하는 데 도움이됩니다. – AWainb