短路和浮动
Short-Circuit And Float
我试图在 Python 中使用短路来打印一些数据,但尽管我写了 .2f
,但我的浮点数并没有在点后出现 2 个数字
((DidHourPlus == 1) and (StartWeek == 1) and (post == "r") and print("The daily salary is %2.f" % ((hours - 8) * 35 + 8 * 30)))
((DidHourPlus == 1) and (StartWeek == 1) and (post == "s") and print("The daily salary is %2.f" % (1.20*((hours - 8) * 35 + 8 * 30))))
((DidHourPlus == 1) and (StartWeek == 1) and (post == "m") and print("The daily salary is %2.f" % (1.50*((hours - 8) * 35 + 8 * 30))))
这是误用短路。不要这样使用 and
。使用 if
语句。
对于两位小数,将 2
放在小数点后:%.2f
而不是 %2.f
。
if DidHourPlus == 1 and StartWeek == 1 and post == "r": print("The daily salary is %.2f" % ((hours - 8) * 35 + 8 * 30)))
if DidHourPlus == 1 and StartWeek == 1 and post == "s": print("The daily salary is %.2f" % (1.20*((hours - 8) * 35 + 8 * 30)))
if DidHourPlus == 1 and StartWeek == 1 and post == "m": print("The daily salary is %.2f" % (1.50*((hours - 8) * 35 + 8 * 30)))
您可以将重复的测试提取到单个 if
:
if DidHourPlus == 1 and StartWeek == 1:
if post == "r": print("The daily salary is %.2f" % ((hours - 8) * 35 + 8 * 30)))
if post == "s": print("The daily salary is %.2f" % (1.20*((hours - 8) * 35 + 8 * 30)))
if post == "m": print("The daily salary is %.2f" % (1.50*((hours - 8) * 35 + 8 * 30)))
然后提取打印输出:
if DidHourPlus == 1 and StartWeek == 1:
salary = None
if post == "r": salary = (hours - 8) * 35 + 8 * 30
if post == "s": salary = 1.20*((hours - 8) * 35 + 8 * 30)
if post == "m": salary = 1.50*((hours - 8) * 35 + 8 * 30)
if salary:
print("The daily salary is %.2f" % salary)
然后提取工资计算:
if DidHourPlus == 1 and StartWeek == 1:
rate = None
if post == "r": rate = 1.00
if post == "s": rate = 1.20
if post == "m": rate = 1.50
if rate:
salary = rate * ((hours - 8) * 35 + 8 * 30)
print("The daily salary is %.2f" % salary)
你可以到此为止,但如果你想变得更高级,你可以在字典中查找费率。
if DidHourPlus == 1 and StartWeek == 1:
rates = {"r": 1.00, "s": 1.20, "m": 1.50}
rate = rates.get(post)
if rate:
salary = rate * ((hours - 8) * 35 + 8 * 30)
print("The daily salary is %.2f" % salary)
在 Python 3.8 中,您可以使用 assignment expression.
进一步收紧它
if DidHourPlus == 1 and StartWeek == 1:
rates = {"r": 1.00, "s": 1.20, "m": 1.50}
if rate := rates.get(post):
salary = rate * ((hours - 8) * 35 + 8 * 30)
print("The daily salary is %.2f" % salary)
我试图在 Python 中使用短路来打印一些数据,但尽管我写了 .2f
,但我的浮点数并没有在点后出现 2 个数字((DidHourPlus == 1) and (StartWeek == 1) and (post == "r") and print("The daily salary is %2.f" % ((hours - 8) * 35 + 8 * 30)))
((DidHourPlus == 1) and (StartWeek == 1) and (post == "s") and print("The daily salary is %2.f" % (1.20*((hours - 8) * 35 + 8 * 30))))
((DidHourPlus == 1) and (StartWeek == 1) and (post == "m") and print("The daily salary is %2.f" % (1.50*((hours - 8) * 35 + 8 * 30))))
这是误用短路。不要这样使用 and
。使用 if
语句。
对于两位小数,将 2
放在小数点后:%.2f
而不是 %2.f
。
if DidHourPlus == 1 and StartWeek == 1 and post == "r": print("The daily salary is %.2f" % ((hours - 8) * 35 + 8 * 30)))
if DidHourPlus == 1 and StartWeek == 1 and post == "s": print("The daily salary is %.2f" % (1.20*((hours - 8) * 35 + 8 * 30)))
if DidHourPlus == 1 and StartWeek == 1 and post == "m": print("The daily salary is %.2f" % (1.50*((hours - 8) * 35 + 8 * 30)))
您可以将重复的测试提取到单个 if
:
if DidHourPlus == 1 and StartWeek == 1:
if post == "r": print("The daily salary is %.2f" % ((hours - 8) * 35 + 8 * 30)))
if post == "s": print("The daily salary is %.2f" % (1.20*((hours - 8) * 35 + 8 * 30)))
if post == "m": print("The daily salary is %.2f" % (1.50*((hours - 8) * 35 + 8 * 30)))
然后提取打印输出:
if DidHourPlus == 1 and StartWeek == 1:
salary = None
if post == "r": salary = (hours - 8) * 35 + 8 * 30
if post == "s": salary = 1.20*((hours - 8) * 35 + 8 * 30)
if post == "m": salary = 1.50*((hours - 8) * 35 + 8 * 30)
if salary:
print("The daily salary is %.2f" % salary)
然后提取工资计算:
if DidHourPlus == 1 and StartWeek == 1:
rate = None
if post == "r": rate = 1.00
if post == "s": rate = 1.20
if post == "m": rate = 1.50
if rate:
salary = rate * ((hours - 8) * 35 + 8 * 30)
print("The daily salary is %.2f" % salary)
你可以到此为止,但如果你想变得更高级,你可以在字典中查找费率。
if DidHourPlus == 1 and StartWeek == 1:
rates = {"r": 1.00, "s": 1.20, "m": 1.50}
rate = rates.get(post)
if rate:
salary = rate * ((hours - 8) * 35 + 8 * 30)
print("The daily salary is %.2f" % salary)
在 Python 3.8 中,您可以使用 assignment expression.
进一步收紧它if DidHourPlus == 1 and StartWeek == 1:
rates = {"r": 1.00, "s": 1.20, "m": 1.50}
if rate := rates.get(post):
salary = rate * ((hours - 8) * 35 + 8 * 30)
print("The daily salary is %.2f" % salary)