我一直在寻找一种简化方法
while bluePoints < BOn // 2 + 1 and redPoints < BOn // 2 + 1:
我知道如何使用字符串和列表进行简化,但不能使用整数
答案 0 :(得分:0)
您应该阐明“简化条件时的方法”的含义。可以用多种方式解释这种情况,而您要寻找的答案可能取决于其余代码中发生的情况。话虽这么说,这里有一些替代条件,应该导致相同的布尔值:
def bon_calc(bon : int) -> int:
return bon // 2 + 1
def red_blu_check(red_p : int, blu_p : int, bon : int) -> bool:
return blu_p < bon // 2 + 1 and red_p < bon // 2 + 1
bluePoints = 1
redPoints = 1
BOn = 2
# Your orignal function
con1 = bluePoints < BOn // 2 + 1 and redPoints < BOn // 2 + 1
# Using all instead of and
con2 = all([bluePoints < BOn // 2 + 1, redPoints < BOn // 2 + 1])
# Using custom function bon_calc
con3 = bluePoints < bon_calc(BOn) and redPoints < bon_calc(BOn)
# Using custom function red_blu_check
con4 = red_blu_check(redPoints, bluePoints, BOn)
assert con1 == con2 == con3 == con4
答案 1 :(得分:0)
像其他受访者一样,我不确定我简化是什么意思。我认为您不喜欢
中的重复bluePoints < BOn // 2 + 1 and redPoints < BOn // 2 + 1
如果有问题,可以使用辅助变量来存储重复计算的结果
limit = BOn // 2 + 1
while bluePoints < limit and redPoints < limit:
有几种方法可以将while
子句中的布尔条件从两个减少为一个(max()
和all()
让人联想到),但我想不到这是对and
的很大改进。 Python中的布尔运算符是快捷键运算符,因此无论如何,只有在第一个条件为false时,才会测试第二个条件。