无法使用for循环解决此分配问题

问题描述 投票:0回答:2

我一直在尝试解决我班上的这个问题,但是我似乎数学不正确。

使用For ..循环,编写一个程序以获取5名雇员的姓名,薪水和状态。计算每个雇员的联邦税,州税和净工资。

    statetax = 0
fedtax = 0
employsalary = 0
netsalary = 0

for people in range(5):
    employname = input("Please enter employee name: ")
    employsalary = int(input("Please enter employee salary: "))
    employstate = input("Please enter employee state: ")
    if employsalary >= 100000:
        fedtax = (employsalary * 20) / 100
    else:
        employsalary < 100000
        fedtax = (employsalary * 15) / 100
    if employstate == 'California' or 'Neveda' or 'Arizona' or 'Washington':
        statetax = (employsalary * 10) / 100
    elif employstate == 'Texas' or 'NewMexico' or 'Alabama':
        statetax = (employsalary * 9) / 100
    elif employstate == 'NewYork' or 'Illinois' or 'Wisconsin' or 'Delaware':
        statetax = (employsalary * 8) / 100
    else:
        statetax = (employsalary * 12) / 100
    netsalary = (employsalary - fedtax - statetax)

    print(employname + ' federal tax is: ' +str(fedtax))
    print(employname + ' state tax is: ' +str(statetax))
    print(employname + ' net salary is: ' +str(netsalary))

由于某些原因,当在两个不同的语句中将雇员工资的值分别乘以8和9时,计算不正确,我无法弄清原因。我希望我能解释这个权利。 x_x

python for-loop percentage accumulator
2个回答
0
投票

每个状态都应以以下方式更改。

if employstate == 'California' or 'Neveda' or 'Arizona' or 'Washington':更改为

if employstate == 'California' or employstate == 'Neveda' or employstate == 'Arizona' or employstate == 'Washington':

或者,这是另一种选择。

if employstate in ['California', 'Neveda', 'Arizona', 'Washington']:

字符串在不为null时始终为true,因此if employstate == 'California' or 'Neveda'等于if usedstate =='California'。


0
投票

参考此

statetax = 0
fedtax = 0
employsalary = 0
netsalary = 0

for people in range(5):
    employname = input("Please enter employee name: ")
    employsalary = int(input("Please enter employee salary: "))
    employstate = input("Please enter employee state: ")
    if employsalary >= 100000:
        fedtax = (employsalary * 20) / 100
    else:
        employsalary < 100000
        fedtax = (employsalary * 15) / 100
    if (employstate == 'California') or (employstate == 'Neveda') or (employstate == 'Arizona') or (employstate == 'Washington'):
        statetax = (employsalary * 10) / 100
    elif (employstate == 'Texas') or (employstate == 'NewMexico') or (employstate == 'Alabama'):
        statetax = (employsalary * 9) / 100
    elif (employstate == 'NewYork') or (employstate == 'Illinois') or (employstate == 'Wisconsin') or (employstate == 'Delaware'):
        statetax = (employsalary * 8) / 100
    else:
        statetax = (employsalary * 12) / 100
    netsalary = (employsalary - fedtax - statetax)

    print(employname + ' federal tax is: ' +str(fedtax))
    print(employname + ' state tax is: ' +str(statetax))
    print(employname + ' net salary is: ' +str(netsalary))

A == B或C或D是无效的语法A == B或A == C或A == D在您的情况下有效。

© www.soinside.com 2019 - 2024. All rights reserved.