【问题标题】:AND OR on python [duplicate]Python上的AND OR [重复]
【发布时间】:2021-04-30 02:43:41
【问题描述】:

下面的代码使数组成为函数的输入。这个 2 元素数组是迭代的,如果新的和先前迭代的数组值之间的差异为零(或者它打算这样工作),它将停止。请注意,下面的函数只是一个伪函数。

正在使用适合我想要的“OR”和“AND”运算符。如果有,哪种方法最好用,如果没有,有什么更好的方法?

def func(array):
   
   counter = 0
   diff = True 
   array_i = array
   while diff: 
       array_f = array_i + 1/array_i
       diff = abs(array_i[0] - array_f[0])  or abs(array_i[1] - array_f[1]) > 0 
       array i = array_f 
       counter += 1
   return array_i, counter 

【问题讨论】:

  • x or y > 0 不像你想象的那样工作
  • @Aaron 正如我所怀疑的那样。请详细说明原因?
  • 每种语言都实现了一种运算顺序,而且大部分都非常相似,所以这种东西还是比较通用的。类似于赋值运算符的比较运算符具有非常低的优先级(最后计算),以使比较计算结果的典型情况通常需要更少的括号。
  • 是的,这可行,我不知道官方文档中对运算符优先级的很好解释,但here's 是一个非常简单的布局。编辑... nvm 它只是在official docs上一个超级冗长的页面的末尾
  • 问题不是优先级。逻辑连接词不会像英语那样自动分布。 “球是绿还是红”相当于“球是绿还是球是红”,人类听众都知道这一点。这不是编程语言的工作方式。

标签: python while-loop operation convergence


【解决方案1】:

当您要检查一个条件另一个条件时,使用逻辑运算符and 运算符用于将两者结合起来。

检查一个或另一个是否大于零。

abs(array_i[0] - array_f[0]) > 0 or abs(array_i[1] - array_f[1]) > 0 

检查两者是否大于零。

abs(array_i[0] - array_f[0]) > 0 and abs(array_i[1] - array_f[1]) > 0 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2019-06-14
    • 2018-10-24
    • 1970-01-01
    • 2022-08-24
    相关资源
    最近更新 更多