Как правильно использовать утверждение в python? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть программа python, которая должна выполнить множество вложенных условий перед выполнением.

Python имеет способ подтверждения с помощью оператора assert,

Синтаксис: assert condition, error_message(optional)

но мне нужно установить несколько вложенных условий и, вероятно, выполнить несколько операторов в assert.

Как правильно использовать assert в python?


Я думаю так: проверяйте c только тогда, когда b > a равен true, и проверяйте a > c только то, что верно. И после того, как утверждение выполняет несколько операторов, таких как: - зарегистрируйте информацию и напечатайте информацию и т.д. c ..

Псевдокод:

if c != null then
  if b > a then
    if a > c then
     print 'yippee!'
    else
     throw exception('a > c error')
  else
    throw exception('b > a error')
else
  throw exception('c is null')

1 Ответ

1 голос
/ 26 марта 2020

Вы имеете в виду что-то подобное?

a = 1
b = 2
c = 3

assert b > a and c > b and a > c, 'Error: a is not greater than c'

Вывод:

Traceback (most recent call last):
  File "main.py", line 6, in <module>
    assert b > a and c > b and a > c, 'Error: a is not greater than c'
AssertionError: Error: a is not greater than c

примерно так: - проверять c только когда b> a true и проверьте> 1020 * только оба верны. И после того, как утверждение выполняет несколько операторов, таких как: - зарегистрируйте информацию и напечатайте информацию и т.д. c ..

Вы можете использовать несколько операторов assert один за другим, как если бы вы написали несколько, если заявления друг под другом, за исключением того, что вы должны учитывать, что ваши assert могут выдавать исключение, о котором вам нужно позаботиться. Таким образом, вы можете просто контролировать поток выполнения и печатать / регистрировать все, что вам нужно ... Например, что-то вроде этого:

def make_comperations(a, b, c = None): # note c is optional
  assert c is not None,  'Error: c is None'
  assert b > a, 'Error: a is not greater than b'
  assert c > a, 'Error: c is not greater than a'


try:
  make_comperations(1, 2, 3) # ok
  make_comperations(1, 2) # error
  make_comperations(1, 2, 0) # error, but won't be executed since the line above will throw an exception
  print("All good!")
except AssertionError as err:
  if str(err) == 'Error: c is None':
    print("Log: c is not given!")
  if str(err) == 'Error: a is not greater than b':
    print("Log: b > a error!")
  elif str(err) == 'Error: c is not greater than a':
    print("Log: c > a error!")

Вывод:

Log: c is not given!
...