【python 代码优化】if not ((page_size>=500 and actual_page_size == 500) or (page_size<500 and page_size ==

1 篇文章 0 订阅
一、说明:

今天写脚本的时候,遇到一个条件判断,直接写成了下面的效果,不仅冗余且不够直观。

if not ((page_size>=500 and actual_page_size == 500) or (page_size<500 and page_size == actual_page_size)):

        pass
二、用AI工具:文心一言优化一下:

1、 if not ((page_size>=500 and actual_page_size == 500) or (page_size<500 and page_size == actual_page_size)) 这个条件语句写的不好,帮我优化一下。

根据你的条件,我们可以将其分解为两部分来简化:

1. 当`page_size`大于或等于500时,`actual_page_size`应该等于500。
2. 当`page_size`小于500时,`page_size`应该等于`actual_page_size`。

简化后的条件可以写成:

if (page_size >= 500 and actual_page_size == 500) or (page_size < 500 and page_size == actual_page_size):
    # do something
else:
    # do something else


但是,由于第二个条件`page_size < 500 and page_size == actual_page_size`已经包含了`page_size`必须等于`actual_page_size`的情况,我们可以进一步简化:

if page_size >= 500 and actual_page_size == 500 or page_size == actual_page_size:
    # do something
else:
    # do something else



但是,如果你想要一个更简洁且逻辑上等价的表达式(尽管在物理上不是完全等价,但逻辑结果相同),你可以使用`min`函数来找出`page_size`和`500`中的较小值,并检查它是否等于`actual_page_size`:

if min(page_size, 500) == actual_page_size:
    # do something
else:
    # do something else



这个表达式在逻辑上是等价的,因为当`page_size`大于或等于500时,`min(page_size, 500)`将返回500,而当`page_size`小于500时,它将返回`page_size`的值。在这两种情况下,我们都在检查这个最小值是否等于`actual_page_size`。

2、但是我只需要上面的else 部分:

如果你只需要`else`部分的代码,并且你已经有了上述的条件判断,那么你可以直接写出`else`块中的内容,而不需要包含`if`语句。但是,为了保持代码的完整性和可读性,我们通常会同时包含`if`和`else`部分,即使你只对`else`部分感兴趣。

不过,如果你只是想要一个条件判断的反面,并且只处理反面的情况,你可以直接写出反面条件并编写相应的代码。在你的情况下,反面条件就是:


if min(page_size, 500) != actual_page_size:
    # 处理 page_size 和 actual_page_size 不满足条件的情况
    # do something else

这样,你就只需要写出`else`部分的代码,并且使用了一个更简洁的条件来判断何时执行这部分代码。

三、总结:最后代码简洁成如下:

```python
if min(page_size, 500) != actual_page_size:
    # 处理 page_size 和 actual_page_size 不满足条件的情况
    # do something else
```

经过AI优化,可以使用min函数来检查page_size500中的较小值是否等于actual_page_size,从而简化了条件判断。如果只需要处理不满足条件的情况,我们可以直接使用反面条件min(page_size, 500) != actual_page_size

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import random # 假设防守方的对应值为10000 opponent_attributes = [161, 269, 267] defend_value = 10000 * 1.1 # 萌娃的三条属性 attributes = [random.randint(80, 90) for _ in range(3)] # 洗练次数 times = 108 # 每次洗练增加的属性值范围 range_min, range_max = 3, 5 # 假设乐、射、御在胜利中的比重分别为40%、30%、30% weights = [0.4, 0.3, 0.3] # 胜利场次 win_count = 0 # 进行多次模拟 for i in range(10000): # 贪心算法,每次优先选择最小的属性进行增加 for j in range(times): min_attr = min(attributes) index = attributes.index(min_attr) attributes[index] += random.randint(range_min, range_max) # 计算萌娃的实际值 actual_value = attributes[0] * attributes[1] * attributes[2] # 如果萌娃的实际值不够对手萌娃的实际值,则继续洗练 while actual_value < opponent_attributes[0] * opponent_attributes[1] * opponent_attributes[2]: min_attr = min(attributes) index = attributes.index(min_attr) attributes[index] += random.randint(range_min, range_max) actual_value = attributes[0] * attributes[1] * attributes[2] # 进行一场比赛,计算萌娃的胜率 win_rate = 0 for k in range(3): if actual_value >= defend_value: # 萌娃直接获胜 win_rate = 1 break elif actual_value < opponent_attributes[k] * 0.9: # 萌娃直接失败 win_rate = 0 break elif actual_value > opponent_attributes[k] * 1.1: # 萌娃在第k场获胜 win_rate += weights[k] / 2 else: # 进行比赛 win_rate += weights[k] * (actual_value / opponent_attributes[k]) / 2 # 统计胜利场次 if win_rate >= 0.5: win_count += 1 print("最终的三条属性:", attributes) print("胜率:", win_count / 10000)你给我写的你看你输出的啥,我要洗脸完的三条属性值
06-03

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值