Skip to content

Instantly share code, notes, and snippets.

@scandiumby
Last active September 27, 2022 15:35
Show Gist options
  • Save scandiumby/0b0736e8b64edba7061ab975a57104c4 to your computer and use it in GitHub Desktop.
Save scandiumby/0b0736e8b64edba7061ab975a57104c4 to your computer and use it in GitHub Desktop.
lesson 27.09.2022
# Операции, операторы и инструкции
## Пример кода
Инструкция импортирует переменную pi из модуля math.
from math import pi
Позиционное присваивание значений глобальным переменным.
x, y, z = [1, 2, 3]
Эта инструкция объявляет функцию со значением по умолчанию.
def ex_func(z=0):
Будут использоваться глобальные переменные.
global x, y
Комбинированные инструкции присваивания.
Теперь глобальная x == 10.
x *= 10
Теперь глобальная y == 20.
y += 18
Глобальная z не изменилась, а локальная z == z*z.
z **= 2
Инструкция объявляет вложенную функцию.
def in_func():
Будет использоваться переменная z из области видимости
объемлющей функции, т.е. ex_func.
nonlocal z
Инструкция запускает цикл.
for i in range(25):
Условная инструкция.
if i<5:
Инструкция перехода в начало цикла.
continue
От 5 до 9.
elif i>=5 and i<10:
Увеличиваем z из обл. видимости ex_func.
z += i
При i == 10.
else:
Инструкция прерывания цикла.
break
Инструкция возврата значения функцией in_func.
return z
Инструкция возврата значения функцией ex_func.
return x + y + in_func()
Инструкция будет отлавливать и обрабатывать исключения.
try:
Инструкция присваивает переменной рез-т вычисления выражения.
res = int(pi)*10 + ex_func(30) + int(input('Введите число: '))
Инструкция выводит результат на экран.
print(res, end='\n\n')
Блок выполняется, когда возбуждается исключение.
except Exception as err:
Выводим сообщение об ошибке.
print(err)
Если ошибок нет.
else:
Ничего не делаем (пустая инструкция-заполнитель).
pass
Этот блок выполняется всегда, даже при наличии исключения.
finally:
Запрашиваем ввод, чтобы окно не закрылось.
input()
# Выражения
## Пример кода
Присваивается смешанное выражение, включающее
генератор списка, арифметические выражения,
выражения сравнения и логическое выражение.
li = [x*10 for x in (0, 1, 2, 3) if x > 0 and x != 3]
Анонимная функция и ее вызов в арифметическом выражении.
res = (lambda a, b: a + b)(li[0], li[1])**2
Выражения с операторами идентичности и членства,
выражения вызовов функций.
if res in [900, 1000] and type(res) is int:
print(res)
# Базовые операции присвоения
## Пример кода
Присвоили выражение.
a = 5 + 0.3
Выведет 5.3.
print(a, end='\n\n')
Присвоили список.
b = [1, 1, 2]
print(b, end='\n\n')
Изменили первый эл-т списка.
b[0] = 0
Выведет [0, 1, 2].
print(b, end='\n\n')
Объявили ф-цию со значением по умолчанию.
def my_func(li=[]):
return li
Присвоили объект функции.
f = my_func
Выведет [0, 1, 2].
print(f(b))
Присвоили вызов функции.
e = my_func(b)
Выведет [0, 1, 2].
print(e)
# Комбинированное присвоение
## Пример кода
Присвоили начальное значение.
a = 3
print('a = 3 ->', a, end='\n\n')
Теперь a == 9, что равнозначно a = a + 6.
a += 6
print('a += 6 ->', a, end='\n\n')
Теперь a == 18, что равнозначно a = a*2.
a *= 2
print('a *= 2 ->', a, end='\n\n')
Теперь a == 9.0, что равнозначно a = a/2.
a /= 2
print('a /= 2 ->', a, end='\n\n')
Теперь a == 81.0, что равнозначно a = a**2.
a **= 2
print('a **= 2 ->', a, end='\n\n')
Теперь a == 1.0, что равнозначно a = a%2.
a %= 2
print('a %= 2 ->', a)
# Позиционное присвоение
## Пример кода
Позиционное присваивание кортежа значений кортежу переменных.
a, b = 3, 5
Выведет a == 3, b == 5.
print('a ==', a, ', b ==', b, end='\n\n')
Позиционное присваивание списка значений кортежу переменных.
a, b = [3, 5]
Выведет a == 3, b == 5.
print('a ==', a, ', b ==', b, end='\n\n')
Позиционное присваивание списка значений списку переменных.
[a, b] = [3, 5]
Выведет a == 3, b == 5.
print('a ==', a, ', b ==', b, end='\n\n')
Позиционное присваивание строки списку переменных.
[a, b] = 'AB'
Выведет a == A, b == B.
print('a ==', a, ', b ==', b, end='\n\n')
Кол-во присв-ых значений должно совпадать с кол-м переменных.
a, b = 'ABC'
too many values to unpack (expected 2).
print('a ==', a, ', b ==', b)
# Груповое присвоение
## Пример кода
Используем 3 инструкции присваивания по отдельности.
a = 'Ok'
b = a
c = b
Выведет a == 'Ok', b == 'Ok', c == 'Ok'.
print('a ==', a, ', b ==', b, ', c ==', c, end='\n\n')
Или 1 эквивалентную инст-цию группового присваивания.
c = b = a = 'Ok'
Опять же выведет a == 'Ok', b == 'Ok', c == 'Ok'.
print('a ==', a, ', b ==', b, ', c ==', c)
# Выражения присваивания в Python 3.8+
## Пример кода
В выражении инициализируются сразу 3 переменные.
a = (b := 3) + (c := 5)
Выведет a == 8, b == 3, c == 5.
print('a ==', a, ', b ==', b, ', c ==', c, end='\n\n')
Список функций (для однозначности используем скобки).
li = [(x_2 := lambda y: y**2), (x_3 := lambda y: y**3)]
Выведет li[0] == 25, li[1] == 125.
print('li[0] ==', li[0](5), ', li[1] ==', li[1](5))
Выведет те же результаты: x_2 == 25, x_3 == 125.
print('x_2 ==', x_2(5), ', x_3 ==', x_3(5), end='\n\n')
# Строки
# Примеры кода
# Присваиваем литерал строки в одинарных кавычках.
str_1 = 'Я – строка в одинарных кавычках.'
# Тип str_1: <class 'str'>.
print('Тип str_1:', type(str_1))
# Присваиваем литерал строки в двойных кавычках.
str_2 = "Я – строка в двойных кавычках."
# Тип str_2: <class 'str'>.
print('Тип str_2:', type(str_2))
# Используем три двойные кавычки.
str_3 = """Я – строка в тройных кавычках.
Я могу располагаться на нескольких строках."""
# Тип str_3: <class 'str'>.
print('Тип str_3:', type(str_3))
# Используем три одинарные кавычки.
str_4 = '''Я тоже строка в тройных кавычках.
Но на этот раз были использованы три одинарные кавычки.'''
# Тип str_4: <class 'str'>.
print('Тип str_4:', type(str_4))
# str.capitalize().
str_1 = "сиНий Кит".capitalize()
# Синий кит.
print('"сиНий Кит".capitalize() ->', str_1, end='\n\n')
# str.title().
str_2 = "сиНий Кит".title()
# Синий Кит.
print('"сиНий Кит".title() ->', str_2, end='\n\n')
# str.upper().
str_3 = "сиНий Кит".upper()
# СИНИЙ КИТ.
print('"сиНий Кит".upper() ->', str_3, end='\n\n')
# str.lower().
str_4 = "сиНий Кит".lower()
# синий кит.
print('"сиНий Кит".lower() ->', str_4, end='\n\n')
# str.swapcase().
str_5 = "сиНий Кит".swapcase()
# СИнИЙ кИТ.
print('"сиНий Кит".swapcase() ->', str_5)
# str.count(sub[, start[, end]]).
# Получим 1.
ans = "Синий иней".count('н', 2, 5)
print('"Синий иней".count("н", 2, 5) ->', ans)
# Получим 0.
ans = "Синий иней".count('s')
print('"Синий иней".count("s") ->', ans, end='\n\n')
# str.find(sub[, start[, end]]).
# Получим 3.
ans = "Синий иней".find('и', 2, 5)
print('"Синий иней".find("и", 2, 5) ->', ans)
# Получим -1 (регистр важен).
ans = "Синий иней".find('И')
print('"Синий иней".find("И") ->', ans, end='\n\n')
# str.index(sub[, start[, end]]).
# Получим 3.
ans = "Синий иней".index('и', 2, 5)
print('"Синий иней".index("и", 2, 5) ->', ans)
# substring not found.
ans = "Синий иней".index('И')
print('"Синий иней".index("И") ->', ans, end='\n\n')
# str.startswith(prefix[, start[, end]]).
str_1 = "Синий иней".startswith("Си")
# True.
print('"Синий иней".startswith("Си") ->', str_1, end='\n\n')
# str.endswith(suffix[, start[, end]]).
str_2 = "Синий иней".endswith("ку", 2, 8)
# False.
print('"Синий иней".endswith("ку", 2, 8) ->', str_2, end='\n\n')
# str.isidentifier().
str_3 = "Синий".isidentifier()
# True.
print('"Синий".isidentifier() ->', str_3, end='\n\n')
# str.isspace().
str_4 = "Синий".isspace()
# False.
print('"Синий".isspace() ->', str_4, end='\n\n')
# str.isalpha().
str_5 = "Синий".isalpha()
# True.
print('"Синий".isalpha() ->', str_5, end='\n\n')
# str.isprintable().
str_6 = "Синий".isprintable()
# True.
print('"Синий".isprintable() ->', str_6, end='\n\n')
# str.islower().
str_7 = "Синий".islower()
# False.
print('"Синий".islower() ->', str_7, end='\n\n')
# str.isdecimal().
str_8 = "125".isdecimal()
# True.
print('"125".isdecimal() ->', str_8, end='\n\n')
str_9 = "12.5".isdecimal()
# Точка не является цифрой 10-й СС (False).
print('"12.5".isdecimal() ->', str_9, end='\n\n')
str_10 = "\u17e1\u17e2".isdecimal()
# Цифры 10-й СС в кхмерском языке (True).
print('"\u17e1\u17e2".isdecimal() ->', str_10, end='\n\n')
str_11 = "\u00b2".isdecimal()
# Символ квадрата не является цифрой 10-й СС (False).
print('"\u00b2".isdecimal() ->', str_11, end='\n\n')
# str.isnumeric().
str_12 = "\u00b2".isnumeric()
# Но к цифрам символ квадрата относится (True).
print('"\u00b2".isnumeric() ->', str_12, end='\n\n')
# str.isalnum().
str_13 = "кит2".isalnum()
# True.
print('"кит2".isalnum() ->', str_13, end='\n\n')
# Используем в вызове позиционные аргументы.
str_1 = "а_{}_в_{}_д"
# Выведет а_б_в_г_д.
print(str_1.format('б', 'г'), end='\n\n')
# Используем в фигурных скобках индексы (номера аргументов).
str_2 = "а_{1}_в_{0}_д"
# Выведет а_г_в_б_д.
print(str_2.format('б', 'г'), end='\n\n')
# Используем в вызове именованные аргументы.
str_3 = "а_{let_4}_в_{let_2}_д"
# Опять же выведет а_г_в_б_д.
print(str_3.format(let_2='б', let_4='г'), end='\n\n')
# Используем оба варианта сразу.
str_4 = "а_{0}_в_{let_4}_д"
# Выведет а_б_в_г_д.
print(str_4.format('б', let_4='г'))
# f-Строки
## Примеры кода
>>> from math import pi
>>> print(f"Значение числа pi: {pi:.2f}")
>>> Значение числа pi: 3.14
>>> from datetime import datetime as dt
>>> now = dt.now()
>>> print(f"Текущее время {now:%d.%m.%Y %H:%M}")
>>> Текущее время 24.02.2017 15:51
>>> x = 10
>>> y = 5
>>> print(f"{x} x {y} / 2 = {x * y / 2}")
>>> 10 x 5 / 2 = 25.0
>>> planets = ["Меркурий", "Венера", "Земля", "Марс"]
>>> print(f"Мы живим не планете {planets[2]}")
>>> Мы живим не планете Земля
+ c =
# Практика
## Задание 1 (что будет в результате присвоения):
1.1 a = 5 + 10*5,
1.2 b = 5/10*5,
1.3 a = True in [True] is True
## Задание 2 (Найдите ошибки в выражениях)
2.1 a, b = [3, '3']
2.2 x, *y = 1, 2, 3
2.3 *x, = 1, 2, 3
2.4 *x, y, *z = 1, 2, 3, 4
2.5 a, _, *b = 1, 2, 3, 4
## Задание 3 (Какой символ будет присвоен переменным в инструкциях?)
3.1 simb_1 = '1234567'[3]
3.2 simb_2 = '1234567'[-3]
## Задание 4 (Что будет присвоено?)
4.1 s_1 = '1234567'[1:4]
4.2 s_2 = '1234567'[-5:-3]
4.3 s_3 = '1234567'[::2]
Источники:
- https://okpython.net/python/python_uchebnik/osnovy/instrukcii_v_python.html
- https://okpython.net/python/python_uchebnik/osnovy/instrukcii_prisvaivanija_v_python.html
- https://okpython.net/python/python_uchebnik/osnovy/stroki_v_python.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment