当前位置: 首页 > 知识库问答 >
问题:

带有if/elif语句的多个条件[重复]

鄢博简
2023-03-14

我试图让if语句从多个条件触发,而不使用不同的触发器多次重写该语句。例如。:

if user_input == "look":  
    print description


if user_input == "look around":
    print description

你会如何把这些浓缩成一个陈述?

我尝试过使用'or',它导致任何原始输入触发语句,而不管输入是否匹配任一条件。

if user_input == "look" or "look around":  
    print description

共有2个答案

方砚
2023-03-14

如果字符串遵循带有可选部分的模式,或者可以执行数组查找,则可以使用正则表达式匹配字符串:

if user_input in ["look", "look around"]:
    print description

布尔运算符只处理布尔值,它计算两边的表达式,如果其中一个表达式计算为True,则返回True。这与自然语言无关

况承福
2023-03-14

你想做的是

if user_input == "look" or user_input == "look around":
    print description

如果您有很多可能性,另一个选择是:

if user_input in ("look", "look around"):
    print description

因为您使用的是2.7,所以也可以这样编写(在2.7或3中可以使用,但在2.6或以下版本中不能使用):

if user_input in {"look", "look around"}:
    print description

这使得对元素进行设置,搜索速度稍微快一点(尽管这只在检查的元素数量远远大于2的情况下才重要)。

你第一次尝试总是失败的原因是。Python中的大多数内容的计算结果都是True(除了FalseNone或空字符串、列表、dict等)接受两个对象,并将它们作为布尔值进行计算。因此user\u input==“look”或“look around”被视为(user\u input==“look”)或“look around”;如果第一个为false,就像您在“环顾四周”时编写的,它将始终通过。

 类似资料:
  • 问题内容: 我试图获得一个if语句从多个条件中触发,而不用不同的触发器多次重写该语句。例如: 您如何将这些内容浓缩成一个陈述? 我试过使用“或”,并且无论输入是否符合任何条件,它都会导致任何raw_input触发语句。 问题答案: 你想做的是 如果您有很多可能性,请选择另一个选项: 由于您使用的是2.7,因此您也可以这样编写(在2.7或3+版本中有效,但在2.6或以下版本中无效): 这使元素成为您

  • 问题内容: 我有一个变量。 我想呼应,如果等于任何下列值,,,,或。有没有办法通过像?? 这样的单个语句来做到这一点? 问题答案: 我认为,使用“ Or”代替“ And”会有所帮助

  • 问题内容: 在JS中,我试图检查扩展名是否以“ png”“ jpg”或“ gif”结尾。我知道这可以通过switch语句来完成,但是我想知道是否有一种更简单的方法可以将所有条件都放入条件语句中。喜欢: 实现此目标的最佳方法是什么? 问题答案: 您可以使用如下数组: 在这种情况下,您将存储“有效”扩展名。然后,您可以使用的方法来查找数组中的任何项目是否与您正在查看的特定扩展名相匹配- 检查值是否大于

  • 问题内容: 在javascript中,当使用带有多个条件的if语句进行测试时,javascript是否会全部测试它们,或者如果已经为false,则在测试所有条件之前会保全吗? 例如: javascript将测试所有这三个条件,还是在看到b不等于1并因此为false之后,将退出该语句? 我从性能的角度出发。例如,如果我正在测试3个复杂的jQuery选择器,那么我不希望jQuery遍历DOM 3次(如

  • 问题内容: 对于我的工作,我必须开发一个小型Java应用程序,该应用程序可以解析非常大的XML文件(约30万行)以选择非常具体的数据(使用),因此我试图对其进行一些优化。我想知道这两个摘要之间哪个更好: 要么 其他详情: 这些if语句在循环内的每次迭代中执行(约20k次迭代) 的是一种在利用外部函数每次迭代计算 如果将设置为,则无需测试正则表达式是否匹配 谢谢你的帮助。 问题答案: 我遵循的一条黄