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

据我所知,我们可以使用 not 运算符并用 not 运算符重写 if 语句(或反转所有符号)!但是由于我的代码在一个带有许多和运算符的 if 语句中有 10 多个条件,这似乎使我的代码重复且难以阅读。如以下示例:


If a>b and A>B and R<w<a<Q and ....

# Else case is just reverse like this

Elif 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 ...)

任何人有任何想法来清理这段代码?或者只是保持安全的方式是重写所有内容>感谢您的帮助!


守着一只汪
浏览 181回答 2
2回答

Helenr

如果所有条件都是严格的不等式(<或>),您可以这样做pairs = [(a, b), (A, B), (Q, a), (a, w), (w, R), ...]if all(x > y for (x, y) in pairs):&nbsp; ...elif all(x < y for (x, y) in pairs):&nbsp; ...all:如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True如果还有其他可能性,您需要稍微修改一下。

MYYA

您的布尔逻辑有缺陷。(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:&nbsp; &nbsp;... code will run when all conditions are trueelif a<b:&nbsp; &nbsp;... code will run when first initial condition failedelse:&nbsp; &nbsp;... 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 :&nbsp; &nbsp;if A>B :&nbsp; &nbsp; &nbsp; if R<w and w<a and a<Q :&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# your "everything's true" code&nbsp; &nbsp; &nbsp; else :&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# your not R<a<w<Q code&nbsp; &nbsp;else :&nbsp; &nbsp; &nbsp; # your A<B codeelse :&nbsp; &nbsp;# your a>b code警告:我是 C/C++/C# 程序员,Python 不是我的强项。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python