Урок №2 Подпишитесь на рассылку в конце статьи чтобы смотреть материал раньше всех

Ссылка на первый урок

Вывод данных в Python

Для вывода данных используется функция printprint(objects) — выводит текстовое представление объектов, разделенных пробелом по умолчанию, в стандартный поток stdout.

Для того, чтобы обеспечить гибкость вывода, в фукнкцию print можно передать некоторые дополнительные параметры:

  • sep — позволяет указать разделитель между объектами. По умолчанию равняется ' '.
  • end — позволяет указать символ, атоматически подставляемый в конец напечатанного текста. По умолчанию равняется \n.
  • file — позволяет указать, куда будет выводиться текст. По умолчанию равняется sys.stdout.

Кроме того, у нас есть возможность использовать строковые методы форматирования, но о них мы поговорим несколько позже, когда будем рассматривать строки.


Ввод данных в Python

Для ввода данных из консоли используется функция input().

input([invite_string]) — в интерактивном режиме происходит остановка выполнения программы и ожидается ввод пользователя. При указании invite_string пользователю будет выведено указанное сообщение.

В указанную переменную будет помещена строка с данными, введенными пользователем. Если нам необходимо получить данные типа, отличного от строки, мы должны сделать явное преобразование типа.


Code Snippets


# Печать объекта.
print(42)
42

# Печать нескольких переданных объектов.
print(42, 24, 0, 17)
42 24 0 17

# Указание разделителя, отличного от значения по умолчанию.
print(42, 24, 0, 17, sep='\n')
42
24
0
17

# Указание завершающего символа.
print(42, 24, 0, 17, end='&')
print(42)
42 24 0 17&42

# Ввод значения с консоли.
val = input()
print(val, type(val))

# Приветственная строка, явное преобразование типа.
val = int(input('Invite string: '))
print(val, type(val))
Invite string: 767
767 <class 'int'>

# Приветственная строка, явное преобразование типа.
val = float(input('Invite string: '))
print(val, type(val))
Invite string: 23
23.0 <class 'float'>

Задача для закреплении

Запросить у пользователя три числа. Сложите первое и второе число. Вычтите от второго третье. Выведите произведение полученных значений.


Условные операторы и ветвление. Логические выражения


Теоретическая часть

Ход выполнения программы называется линейным, если выражения выполняются друг за другом в строго определенном порядке.

К сожалению, часто этого не достаточно. В таких случаях используются условные операторы.

if condition:
  # действия, выполняемые при истинности условия condition
  pass
elif other_condition:
  # действия, выполняемые при истинности other_condition
  pass
else:
  # действия, выполняемые во всех остальных случаях
  pass

Вложенные условия

Блоки условного оператора могут быть вложены друг в друга. Иногда это необходимо, однако стоит учитывать, что большое количество вложенных условных операторов увеличивает цикломатическую сложность программы.


Условия. Операторы сравнения

Условия могут формироваться одним из следующих способов:

  • Любой объект в Python может быть условием. Объект встроенного типа считается ложным, если он равен нулевому числу (любого типа) или пустой коллекции. Все остальные объекты считаются истиными.
  • Операторы сравнения формируют условия:
  1. a == b — равенство значений объектов.
  2. a != b — неравенство значений объектов.
  3. a < b — первый объект меньше второго.
  4. a > b — первый объект больше второго.
  5. a <= b — первый объект меньше либо равен второму.
  6. a >= b — первый объект больше либо равен второму.
  • Составные условия.
  • Другие инструкции, которые возвращают логическое значение или любой другой объект (см. первый пункт).

Составные условия. Логические операторы

Python поддерживает набор логических операторов:

  • a in b — логический оператор вхождения.
  • not a — отрицание.
  • a and b — логическое И.
  • a or b — логическое ИЛИ.

В качестве операндов для логических операторов могут присутствовать другие условия, в результате чего получаются составные условия — состоящие из комбинации нескольких.

Ленивые вычисления в Python

Операторы and и or поддерживают ленивые вычисления. Идея заключается в том, что если нам заранее известен результат логического выражения, у нас нет необходимости вычислять все его операнды.

Для and вычисления остановятся, когда будет встречен первый ложный элемент.

Для or вычисления остановятся, когда будет встречен первый истинный элемент.

Логические операторы могут быть скомбинированы в сложное условие и вычислено в соответствии с приоритетом операторов:

if condition1 and condition2 or condition3:
  pass

Значения, возвращаемые логическими операторами and и or

В Python and и or возвращают не True или False, а один из своих операндов(благодаря тому, что любой объект может быть оценен как истина или ложь).

ОператорВозвращаемое в случае истинности значениеВозвращаемое в случае ложности
orпервый истинный операндпоследний ложный операнд(последний операнд)
andпервый ложный операндпоследний истинный операнд (последний операнд)

Тернарный условный оператор

В Python существует короткая форма записи условного оператора: тернарный оператор. Он может быть использован внутри выражения например, при присвоении переменной.

a = true_value if condition else false_value

В таком случае, при выполнении условия condition в переменную a будет присвоено указанное значение true_value а в случае его ложности, false_value.


a = 'строка'
b =''

if b:
  print('t')
else:
  print('f')
f

Code Snippets


Условные операторы


# Условный оператор с оператором сравнения
a = 0
b = 12
if a > b:
  print('greater')
else:
  print('not greater')

# Объекты могут также быть оценены как истинные или ложные
a = 0
if a:
  print('yes')
else: 
  print('no')

# Истинными являются все ненулевые объекты и непустые коллекции.
a = 21
if a:
  print('yes')
else:
  print('no')

# Пример составного условия. Ищем положительное нечетное число.
num = int(input('Введите число: '))
if num > 0 and num % 2:
  print('yes')
else:
  print('no')

# То же самое через вложенные условия.
# Фактически, сейчас мы реализуем условие and через вложенные условия.
num = int(input('Введите число: '))
if num > 0 
  if num % 2:
    print('yes')
  else:
    print('no')
else:
  print('no')

# В Python нет оператора множественного выбора, но похожее поведение эмулируется
# с помощью конструкции elif.
a = int(input('Введите число: '))

if a > 0:
  print('> 0')
elif a < 0:
  print('< 0')
else:
  print(' == 0')

Составные условия. Логические операторы


# Оператор in проверяет вхождение объекта в коллекцию.
lst = [1, 2, 3, 4]
print(5 in lst)
False

# Оператор in и not могут быть скомбинированы.
lst = [1, 2, 3, 4]
print(5 not in lst)
True

# Значение, возвращаемое and.
lst = [1, 2, 3]
lst1 = [123]
print(lst and lst1)
[123]

# Значение при ложном and.
lst = [1, 2, 3]
lst1 = []

print(lst and lst1)
[1]

# Значение, возвращаемое при истинном or.
lst = [1]
dct = {2:3}
print(lst or dct)

# Значение, возвращаемое при ложном or.
lst = []
dct = {}
print(lst or dct)

# Проверим, что наши операторы ленивые. 
def f1():
  print('f1')
  return True

def f2():
  print('f2')
  return False

value = f2() and f1()
f2

Тернарный оператор


# Проверим, была ли введена непустая строка.
val = input('Введите строку:')
if val:
  print(val)
else: 
  print('Пустая строка')
Введите строку:
Пустая строка

# То же самое, но с тернарным оператором.
val = input('Введите строку:')
print(val) if val else print('Пустая строка')
Введите строку:
Пустая строка

# Пример с присвоением результата значению.
a = int(input('Введите число: '))
odd = True if a % 2 else False
print(odd)
Введите число: 23
True

Задачи для закрепления

  1. Проверьте делимость числа на 17.
  2. Если число нечетное, выведите “ого”, если четное “ага”.
  3. Если число нечетное, выведите “ого” если число четное, и отрицательное, выведите “маловато”, если число четное и положительное, выведите “нормально”, если число равно нулю, выведите “на нет спроса нет”.
  4. Переписать оператор or через вложенные условные операторы.

# вернуть true, если число больше нуля либо нечетное, и false в противном случае

num = 10

if num > 0 or num % 2:

  print(‘true’)

else:

  print(‘false’)


num = int(input(‘Введите число ‘))

if num > 0:

  print(‘True’)

else:

  if num % 2:

    print(‘True’)

  else:

    print(«False»)


if num > 0:

  print(‘true’)

elif num % 0:

  print (‘true’)

else:

  print (‘false’)


Подпишитесь на рассылку

Если это было вам полезно — вы можете сказать нам спасибо!