我有一些代码可以根据一周工作时间来计算工资/加班费。有两个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))
答案 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)
在写完我的初步答案之后,我认为一个完全不同的答案我觉得更好。您可以使用max
和min
功能确保不添加负加班。
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 - 40
或0
并将其乘以rate * 1.5
。如果少于40小时,这将为零。然后,它会找到较小的weekX
和40
,并将其乘以rate
来查找标准薪资并将其加到加班费中。
https://docs.python.org/3/library/functions.html#max https://docs.python.org/3/library/functions.html#min