结合两个if语句的结果 - python / jupyter notebook

时间:2017-08-30 16:14:35

标签: python python-3.x if-statement jupyter-notebook

我有一些代码可以根据一周工作时间来计算工资/加班费。有两个if语句计算第1周和第2周的工资。我想要做的是计算总工资,即pay1的结果,如果声明加上week2 if语句的结果,但我正在努力。我可能比实际需要的要困难得多。

我正在使用Jupyter笔记本,其中下面的每个块都在一个单独的单元格中。第一个if语句的结果= 440第二个if语句= 473.所需的结果是将这些组合起来,使输出为913.

非常感谢任何帮助或建议!

rate = 11
week1 = 40 
week2 = 42

if week1 <= 40:
    print((rate * week1))
else:
    print((week1 - 40)*(rate * 1.5) + (40 * rate))

if week2 <= 40:
    print(rate * week2)
else:
    print((week2 - 40)*(rate * 1.5) + (40 * rate))

4 个答案:

答案 0 :(得分:0)

您可以使用称为三元运算符的稍微更高级的功能来执行此操作:

rate = 11
week1 = 40 
week2 = 42

week1_pay = rate * week1 if week1 <=40 else (week1 - 40)*(rate * 1.5) + (40 * rate))
week2_pay = rate * week2 if week2 <=40 else (week2 - 40)*(rate * 1.5) + (40 * rate))

print(week1_pay)
print(week2_pay)
print(week1_pay + week2_pay)

当您大声朗读代码时,此运算符非常类似于它的声音。即:如果某些条件为真,则变量x等于某个值,否则变量x等于某个其他值。

在一个更简单的例子中,我们可以使用:

number = 45
pos_or_neg = "negative" if number < 0 else "positive"

在此示例中,pos_or_neg将评估为"positive",因为45&gt; = 0。

三元帮助:

Does Python have a ternary conditional operator? https://docs.python.org/3.3/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator

答案 1 :(得分:0)

if week1 <= 40:
    #print((rate * week1))  # Not necessary, unless you need to print separate weekly pays as well.
    pay = rate * week1
else:
    #print((week1 - 40)*(rate * 1.5) + (40 * rate))
    pay = (week1 - 40)*(rate * 1.5) + (40 * rate)

if week2 <= 40:
    #print(rate * week2)
    pay += rate * week2
else:
    #print((week2 - 40)*(rate * 1.5) + (40 * rate))
    pay = (week2 - 40)*(rate * 1.5) + (40 * rate)
print(pay)

答案 2 :(得分:0)

rate = 11;
week1 = 40;
week2 = 42;

if week1 <= 40 and week2 <= 40:
    print((rate * week1)+(rate * week2))
else:
    print("For Week1: ", (week1 - 40) * (rate * 1.5) + (40 * rate))
    print("For Week2: ", (week2 - 40) * (rate * 1.5) + (40 * rate))
    print("Total is: ", ((week1 - 40) * (rate * 1.5) + (40 * rate) + (week2 - 40) * (rate * 1.5) + (40 * rate)))

您也可以使用变量。

答案 3 :(得分:0)

在写完我的初步答案之后,我认为一个完全不同的答案我觉得更好。您可以使用maxmin功能确保不添加负加班。

rate = 11
week1 = 40 
week2 = 42

week1_pay = max(week1 - 40, 0)*(rate * 1.5) + (min(week1, 40) * rate)
week2_pay = max(week2 - 40, 0)*(rate * 1.5) + (min(week2, 40) * rate)

print(week1_pay)
print(week2_pay)
print(week1_pay + week2_pay)

这可以找到更大的一个:weekX - 400并将其乘以rate * 1.5。如果少于40小时,这将为零。然后,它会找到较小的weekX40,并将其乘以rate来查找标准薪资并将其加到加班费中。

最小和最大文档:

https://docs.python.org/3/library/functions.html#max https://docs.python.org/3/library/functions.html#min

相关问题