为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法在单行 else 语句中否定 if 语句,但其中的“and”运算符除外?

有没有办法在单行 else 语句中否定 if 语句,但其中的“and”运算符除外?

守着一只汪 2022-06-28 18:03:03
据我所知,我们可以使用 not 运算符并用 not 运算符重写 if 语句(或反转所有符号)!但是由于我的代码在一个带有许多和运算符的 if 语句中有 10 多个条件,这似乎使我的代码重复且难以阅读。如以下示例:If a>b and A>B and R<w<a<Q and ....# Else case is just reverse like thisElif a<b and A<B and R>w>a>Q and ... # Thanks for @bOb for correct the syntax of this example# I can not use just single Else without rewrite all condition (code will know a<b or A<B and ...)任何人有任何想法来清理这段代码?或者只是保持安全的方式是重写所有内容>感谢您的帮助!
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

如果所有条件都是严格的不等式(<或>),您可以这样做


pairs = [(a, b), (A, B), (Q, a), (a, w), (w, R), ...]

if all(x > y for (x, y) in pairs):

  ...

elif all(x < y for (x, y) in pairs):

  ...

all:如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True


如果还有其他可能性,您需要稍微修改一下。


查看完整回答
反对 回复 2022-06-28
?
MYYA

TA贡献1868条经验 获得超4个赞

您的布尔逻辑有缺陷。


(A and B and C) 的反义词是 (!A or !B or !C)——如果你否定条件,你需要切换操作符。


你的语法有缺陷。“ELSE”确实需要或允许条件;它只是“ELSE”这个词


“ELSE IF”是一种完全不同的动物;Python 中的那个关键字是 ELIF,你的条件应该是与 IF 中的条件截然相反的东西。


像这样的东西:


if a>b and A>B and R<w<a<Q:

   ... code will run when all conditions are true

elif a<b:

   ... code will run when first initial condition failed

else:

   ... code will run when A<B or !(R<w<a<Q)


2)条件R<w<a<Q在大多数计算机语言中是无效的,并且需要是一系列与单个不等式条件,即 (R<w && w<a && a<Q)


或者你可以一直筑巢


if a>b :

   if A>B :

      if R<w and w<a and a<Q :

         # your "everything's true" code

      else :

         # your not R<a<w<Q code

   else :

      # your A<B code

else :

   # your a>b code

警告:我是 C/C++/C# 程序员,Python 不是我的强项。


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信