当前位置: 首页 > 知识库问答 >
问题:

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

孔和畅
2023-03-14

我一直试图在班上解决这个问题,但我似乎无法正确计算。

用于。。循环,编写程序获取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

共有2个答案

吕鹏
2023-03-14

参考这个

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在您的情况下是有效的。

郎恺
2023-03-14

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

如果employstate=='California'或'Neveda'或'Arizona'或'Washington',则更改

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

或者,这是另一种选择。

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

字符串不为null时始终为true,因此如果employstate=='California'或'Neveda',则等于如果employstate=='California'

 类似资料:
  • 我试图理解数组加法CoderByte问题的解决方案中的逻辑。这是问题提示——“使用JavaScript语言,让函数ArrayAdditionI(arr)获取存储在arr中的数字数组并返回字符串true,如果数组中的任何数字组合可以加到等于数组中的最大数字,否则返回字符串false。例如:如果arr包含[4, 6, 23, 10, 1, 3],则输出应该返回true,因为4 6 10 3 = 23。

  • 我想做一个小程序,从数组中删除一些不需要的字符,如/n,/t,问题是它在部分工作。第三届和第五届): 程序: 它显示了这个结果: 一些不需要的字符被删除,但不是全部。。。指数3和5。 下面是将html标记的字符串内容逐字符放入数组“caractereinside”的主要代码: 结果是: 如果我将"var ContenuesPacemenu"转换成一个规则数组,就像这样,它的工作原理是: 我明白了:

  • 我正在为Codewars做一个kata,它将两个数字数组相对放置。“对手”数组的平均数总是大于“codewarrior”数组,并且两个数组的长度总是相同的。我需要做的是找到获得胜利的最有效方法(codewarrior[x] 在上面,我将两个数组从最小到最大排序。然后,我有一个大的while循环来迭代“codefighter or”数组,以及两个time循环和一个if语句,每次迭代“对手”数组时,都

  • 本文向大家介绍Java for循环详解,包括了Java for循环详解的使用技巧和注意事项,需要的朋友参考一下 对于java中的for循环,我们用的最多的无非就是下面这个语句: 但是对于for循环来说,它也有很多变体,如果不清楚了解for循环的结构原理,遇上一些变体的for循环,可能一时不太明白它的含义,for循环虽然有很多变体,但都离不开括号内3条语句的模式(除了增强for循环模式,后面再讨论)

  • hasNext()的定义是“如果此扫描仪的输入中有另一个标记,则返回true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。” 当我把 standardInput.hasNext() 放在 for 循环中时,程序会向无穷大运行。但是如果我把它放在 while-loop 中,它不会运行到无穷大。这两个程序之间的区别在哪里,为什么其中一个有效而另一个无效? for循环: while-l

  • 问题内容: 我正在浏览旧的考试问题(当前是大学一年级),我想知道是否有人可以更彻底地解释为什么以下循环在预期的情况下不会结束。为什么会这样?我了解由于舍入错误或其他原因,它会跳过100.0,但是为什么呢? 问题答案: 数字0.1不能精确地用二进制表示,就像1/3不能精确地用十进制表示一样,因此您不能保证: 这是因为在二进制文件中: 但是,双精度数不能包含无限精度,因此,正如我们将1/3近似为0.3