【问题标题】:How to fix the while loop in this program?如何修复此程序中的 while 循环?
【发布时间】:2017-03-30 03:04:38
【问题描述】:

编写一个包含 3 个列表的 python 程序:

姓名工资 小时数 胡安 7.50 3511.00 41 伊万娜 18.25 26 礼来9.25 35 罗伯特 11.10 45

并使用这个逻辑:

员工工作时间超过 40 小时后获得加班费

加班费按以下公式计算:

总工资=(35*工资)+((35小时)*工资*1.5)

正常工资使用以下公式计算:

总工资 =(小时*工资)

使用循环来处理这些列表。

打印每位员工的工资、工时和总工资。

我正在运行这个程序并且我有 for 循环。输入工作正常,但它应该具有相同输出的 while 循环根本没有给我任何输出。这是我的代码。

`Name = ["Juan","Rae","Ivanna", "Lilly", "Robert"]
Hours = [35,41,26,35,45]
Wage = [7.5,11,18.25,9.25,11.1]
print ("Name\tWage\tHours\tGP")
for X in range(5):
   GP = 0
   if(Hours[X] > 40):
       GP = (35*Wage[X]) + ((Hours[X]-35)*Wage[X]*1.5)
   else:
       GP = Hours[X] * Wage[X]
   print (Name[X],"\t", Wage[X],"\t", Hours[X],"\t", GP)

Name = ["Juan","Rae","Ivanna", "Lilly", "Robert"]
Hours = [35,41,26,35,45]
Wage = [7.5,11,18.25,9.25,11.1]
print ("Name\tWage\tHours\tGP") 
counter = 5
Y = 0
while (Y):
    if (Hours[Y] > 40):
        GP = (35*Wage[Y]) + ((Hours[Y]-35)*Wage[Y]*1.5)
    else:
        GP = Hours[Y] * Wage[Y]
print (Name[Y],"\t", Wage[Y],"\t", Hours[Y],"\t", GP)`

我的输出是

Name    Wage    Hours   GP
Juan     7.5     35      262.5
Rae      11      41      484.0
Ivanna   18.25   26      474.5
Lilly    9.25    35      323.75
Robert   11.1    45      555.0
Name    Wage    Hours   GP
Juan     7.5     35      555.0

我不知道 while 循环中的错误在哪里。

【问题讨论】:

    标签: python


    【解决方案1】:

    最后一行需要缩进。所以不是

    while (Y):
        if (Hours[Y] > 40):
            GP = (35*Wage[Y]) + ((Hours[Y]-35)*Wage[Y]*1.5)
        else:
            GP = Hours[Y] * Wage[Y]
    print (Name[Y],"\t", Wage[Y],"\t", Hours[Y],"\t", GP)
    

    应该是

    while (Y):
        if (Hours[Y] > 40):
            GP = (35*Wage[Y]) + ((Hours[Y]-35)*Wage[Y]*1.5)
        else:
            GP = Hours[Y] * Wage[Y]
        print (Name[Y],"\t", Wage[Y],"\t", Hours[Y],"\t", GP)
    

    因为现在 print 在 while 循环之外,所以它只使用值 Y=0 打印。

    【讨论】:

    • 您错过了条件必须是Y < len(Name),并且在循环体Y += 1 的末尾需要增加Y。因为循环体永远不会运行,因为它的条件值总是假的。
    • 非常感谢你们。我之前尝试过,但没有正确地在一起!现在一切都好!
    【解决方案2】:

    必须遵循python code indented 并且需要使用(增量/减量/布尔)提供正确的while loop condition。因为您的代码需要增加Y 的值。

    Name = ["Juan","Rae","Ivanna", "Lilly", "Robert"]
    Hours = [35,41,26,35,45]
    Wage = [7.5,11,18.25,9.25,11.1]
    print ("Name\tWage\tHours\tGP")
    for X in range(5):
        GP = 0
        if(Hours[X] > 40):
            GP = (35*Wage[X]) + ((Hours[X]-35)*Wage[X]*1.5)
        else:
            GP = Hours[X] * Wage[X]
        print (Name[X],"\t", Wage[X],"\t", Hours[X],"\t", GP)
    
    Name = ["Juan","Rae","Ivanna", "Lilly", "Robert"]
    Hours = [35,41,26,35,45]
    Wage = [7.5,11,18.25,9.25,11.1]
    print ("Name\tWage\tHours\tGP") 
    counter = 5
    Y = 0
    while (Y<counter):
        if (Hours[Y] > 40):
            GP = (35*Wage[Y]) + ((Hours[Y]-35)*Wage[Y]*1.5)
        else:
            GP = Hours[Y] * Wage[Y]
        print (Name[Y],"\t", Wage[Y],"\t", Hours[Y],"\t", GP)
        Y=Y+1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2019-05-02
      • 2020-01-18
      相关资源
      最近更新 更多