If Python in Python(嵌套布尔语句)

时间:2016-05-06 20:13:23

标签: python python-3.x if-statement boolean

我不知道标题是否使用了正确的术语,但我希望得到一些代码并尝试减少代码的长度,这样我就可以更快地输入评估。这是以及如果我以漫长的方式做到这一点的示例。

WebElement table = driver.findElement(By.id("tblSBResults"));
String date = table.findElement(By.xpath("tbody/tr[1]/td[1]")).getText();

但是,我试图通过以下方式做一些事情来缩小规模:

Valid = True
while Valid:
  Column = int(input("Insert Column: "))
  Row = int(input("Insert Row: "))
  if Row < 0 or Row > 9 or Column < 0 or Column > 9:
    Valid = False

有人可以解释为什么它似乎不起作用,有人可以证明他们将如何解决它。我只是试图减少我的if语句,因为在整个评估过程中我会使用大量的语句。

更新: - 这也可以放入Try-Catch中,这样在输入空值或无值时不会导致程序崩溃

由于

3 个答案:

答案 0 :(得分:3)

or运算符是一个短路比较,返回最早的真值,如果没有真值,则返回最后一个值。在(Row or Column) < 0中,首先评估Row or Column。如果Row非零,则该部分返回Row。否则,它将返回Column。然后,它将此单个值与0进行比较。对于另一个比较也是如此,我假设它有一个拼写错误,并且打算是(Row or Column) > 9(而不是> 0)。

您还可以尝试以下(不是详尽的清单):

if not 0<=row<=9 or not 0<=column<=9
if row not in range(10) or column not in range(10)
if not all(0<=x<=9 for x in (row,column))

选择在您的计划环境中最有意义的那个。

答案 1 :(得分:3)

您可以完全删除if语句。

Valid = True
while Valid:
  try:
     Column = int(input("Insert Column: "))
     Row = int(input("Insert Row: "))
     Valid = Row in range(10)  and Column in range(10)
  except Exception as e:
     print(e)
     Valid = False

答案 2 :(得分:0)

你可以尝试这个,但这会创建一个包含10个元素的数组[0..9] ..

Valid = True
rangeValue = range(10)
while Valid:
  Column = int(input("Insert Column: "))
  Row = int(input("Insert Row: "))
  Valid = Row in rangeValue and Column in rangeValue