6  Базовые конструкции языка Python

6.1 Переменные

Одна из самых основных концепций программирования это переменные. Переменные - поименнованные логические ячейки памяти. Помним, что программа - это алгоритм работы с нашими данные. Так вот, переменные это и есть наши данные. Часто разные авторы любят проводить аналогию, что переменные это некоторые коробки, которые имеют ярлыки с подписями. Переменная имеет имя и значение. Пользуясь этим знанием, создадим переменную.

lucky_number = 9

Синтаксис очень простой: имя_переменной = значение. Символ ‘=’ называется оператором присваивания. Разберем, какие быввают имена и какие бывают значения

6.1.1 Имена

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

  1. Имя не должно начинаться с цифры

  2. Имя не должно быть зарезервированным словом

Зарезервированные слова - специальные конструкции для обозначения элементов синтаксиса. Полный их перечень можно посмотреть в литературе.

Примеры подходящих имен:

cat = 6
meow_meow = "meow"
_dog = False

Примеры неправильных имен:

# строки, начинающиеся с решетки, это комментарии
# они игнорируются интерпретатором и служат подсказками для программистов
# старайтесь писать комментарии!

56ghf = False # имя начинается с цифры
True = 1 # имя зарезервированное слово
dfdf$qw@ = 1 #Содержит недопустимые символы

Имена в Python регистрозависимы, т.е. имена cat и Cat это разные имена.

Важно

Старайтесь давать осмысленные имена! Помните, программист прежде всего читатель, а не писатель, и он должен понимать, что лежит в какой переменной и для чего она нужна.

Существуют несколько нотаций (соглашений) о написании имён. В Python чаще всего используются змеиная нотация: имена переменных пишут с маленькой буквы, разделяя слова знаком нижнего подчеркивания (snake_case).

6.1.2 Типы переменных

Кроме имени переменной важно её значение. Python язык с динамической типизацией, т.е. тип переменной определяется по присваемому значению в момент присваивания. Если мы существующей переменной, присвоим значение другого типа, она изменит свой тип автоматически.

Основные типы данных
Тип переменной Пример
int a = 5
float a = 5.5
str a = “5.5”
bool a = True

Количество памяти, выделяемое на одну переменную, может отличаться от вида используемого интерпретатора: CPython (общепринятая), Jython, IronPython. К тому же, в зависимости от значения, интерпретатор может выделить автоматически необходимое количество памяти.

Переменные можно из одного типа приводить к другому. Такая операция называется операцией приведения типов (type cast). Правила преобразования типов:

  1. Любой тип можно преобразовать в строку
  2. Любой тип можно преобразовать в логический тип: 0 или пустая строка будет False, остальные значения будут True
  3. Строку можно преобразовать в число, если она представляет из себя число и не содержит посторонних символов.
a = 5
type(a) # Проверка типа переменной
int
b = str(a) # type cast, аналогичные операции int(), float(), bool()
type(b)
str

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

6.2 Функции

Другой важный концепт - функции. Так называют логически отделенную часть кода, имеющую имя и выполняющую определенные, заданные программистом операции. О том, как создавать функции поговорим на будущих занятиях. Сейчас важно знать, что у функции существует определение, где мы прописываем выполняемые операции, и вызовы, где мы выполняем эти операции. Функции призваны уменьшить дублирование кода, когда одним и тем же стандартным операциям присвоить имя.

Синтаксис вызова функции простой: имя_функции (значение_параметра1, значение_параметра2). Т.е. имя функции и в круглых скобках значения параметров функции - переменные внутри функции, от которых зависят выполняемые операции. Параметров может быть от 0 до очень большого неопределенного переменного количества. Вы уже вызывали встроенные функции print и type.

6.3 Арифметические операции

Арифметические операции осуществляются над числами.

a = 5
b = 7
a + b
12

Чтобы не потерять результат, сохраните его в переменную

c = a + b
Арифметические операции
Операция Значение
a + b Сложение
a - b Вычитание
a * b Умножение
a / b Деление
a // b Деление нацело
a % b Получение остатка от деления
a ** b Возведение в степень

Сложные трансцедентные операции содержаться в модуле math. Модулям у нас будет посвящено отдельное занятие. Сейчас важно знать, что модуль - это цельный код. который за вас написали другие программисты и которым можно воспользоваться, импортировав себе этот модуль.

import math
print(math.sqrt(9)) # Имя_модуля.имя_функции(значение_параметра) - sqrt - square root - квадратный корень
3.0
Константы

В Python не существует понятие констант. Есть соглашение об именах: переменные, которые не должны изменяться должны называться целиком в верхнем регистре (капсом)

PI = 3.1416

6.4 Логические операции

Логические операции осуществляются над логическими переменными или логическими высказываниями. Логическое высказывание можно получить путем сравнения значений.

Логические операции
Операция Значение
a and b Конъюнкция
a or b Дизъюнкция
not a Инверсия
Операции сравнения
Операция Значение
a == b Равенство
a != b Неравенство
a < b Строго меньше
a <= b Меньше или равно
a > b Строго больше
a >= b Больше или равно

Пример

a = 5
b = 6
c = a > 10 or b < 5
print(c)
False

Нельзя проверить на равенство или неравенство с None. Для проверки служит специальная конструкции is и is not.

a = None
b = a is not None
print(b)
False

Приоритет операций как в математике и его можно изменять с помощью заключения выражения в скобки. Как в математике.

6.5 Строки

Обратите внимание: для определения строки, её значения надо заключить в кавычки. Кавычки могут быть одинарными или двойными. Важно, чтобы значение обрамляли однотипные кавычки.

a = "Hello world!" 
b = 'Привет, мир!' 
print(a) 
print(b)
Hello world!
Привет, мир!

Строки могут быть многострочными. Для этого надо значение заключить в три пары однотипных кавычек

multiline = '''Привет. 
Я многострочная строка 
Как поживаешь? ''' 
print(multiline)
Привет. 
Я многострочная строка 
Как поживаешь? 

Строки можно объединять. Такая операция называется сложением строк или конкатенацией.

s = "Привет" + " мир" 
print(s)
Привет мир

Строки можно умножать на число - тогда строка повторится заданное количество раз.

s = "ХА"*10 
print(s)
ХАХАХАХАХАХАХАХАХАХА

Для строк существуют специальные символы, которые записываются с обратного слэша. Тогда 2 символа на печати интерпретируются как один особый, что может вносить сумятицу.

Специальные символы - escape-последовательности. В таблице далеко неполный список
Символ Значение
“\n” Перенос строки
“\t” Табуляция (особый вид пробела)
“\r” Возврат каретки
“\”” Кавычка
“\\” Обратный слэш

Чтобы избежать коллизий, можно использовать r-строки. Они могут быть полезны для обозначения путей к файлам в Windows.

asis_str = r"C:\Users\numbers" #\n не интерпертируется как символ переноса строки

Кроме r-строк существуют f-строки, которые позволяют удобно подставлять в строку значения переменных и выражений.

square = 10
print(f"Площадь фигура равна {square}")
Площадь фигура равна 10

У строк можно выбирать подстроки. Нумерация начинается с 0. Позиции перечисляются в квадратных скобках. Индексация возможна в трех режимах.

  • [start] - выбирает 1 символ с позиции start

  • [start:end] - выбирает подстроку с позиции start до end, не включая end

  • [start:end:step] - выбирает подстроку с позиции start до end, не включая end, с шагом step

  • Возможна отрицательная индексация, тогда нумерация символов начинается с конца строки. -1 - последний символ строки.

    Интервалы

    Python всегда работает с полуоткрытыми интервалами, чтобы при последовательной работе с ними не возникало пересечений.

s = "Мама мыла раму."
print(s[0])
print(s[1:5])
print(s[0:7:2])
print(s[-2])
М
ама 
Мм ы
у

Для работы с переменными существуют ряд встроенных функций. Одна из таких - получение длины. В случае строки - количества символов в строке.

print(len("Мама мыла раму."))
15

6.6 Дополнительно

Можно вводить данные с клавиатуры. Для этого есть функция input. Она возращает строку. Если функция возвращает какое-то значение, следовательно, его можно записать в переменную.

a = input("Введите значение: ")# Параметр здесь для красоты - приглашение ввести значение

6.7 Подведение итогов

  1. У переменных должно быть “говорящее” имя

  2. Тип переменной зависит от её значения

  3. В Python есть функционал для выполнения любых арифметических и логических операций.

  4. Строки бывают разные: однострочные, многострочные, r-строки, f-строки.

6.8 Задание

Внимание

Не используйте решения, которые основываются на следующие темы (циклы, условия и т.п.). Они не будут зачтены. Если желаете действительно научиться, то старайтесь использовать интернет по-минимуму. Максимум литературу или документацию.

  1. Конвертер температуры Напишите программу, которая переводит температуру из градусов Цельсия в Фаренгейты по формуле: F = (C × 9/5) + 32.

  2. Конкатенация строк Попросите пользователя ввести имя и фамилию, затем выведите их в одной строке через пробел.

  3. Площадь прямоугольника Запросите у пользователя длину и ширину прямоугольника, затем вычислите и выведите его площадь.

  4. Операции с числами Даны две переменные: a = 10 b = 3 Выведите результаты сложения, вычитания, умножения, деления и возведения в степень.

  5. Длина строки Попросите пользователя ввести любое слово и выведите количество букв в нём.

  6. Четное или нечетное Попросите пользователя ввести число и определите, является ли оно четным (используйте %).

  7. Повторение строки Попросите пользователя ввести слово и число n, затем выведите это слово n раз подряд.

  8. Конвертер минут в часы Попросите пользователя ввести количество минут, затем переведите их в часы и минуты (например, 125 мин = 2 ч 5 мин).

  9. Напишите программу, соверщающую следующие действия:

  • принимает с клавиатуры 3 числа
  • рассчитывает значение по формуле Герона \(S = \sqrt{p(p-a)(p-b)(p-c)}, p = a + b +c\)
  • выводит на экран полученное значение
  • выводит, является ли оно чётным.
  1. Задачи со строками

    Первые и последние символы

    Попросите пользователя ввести строку, затем выведите:

    • Первые 3 символа

    • Последние 3 символа

    Пример:
    Ввод: "Программирование"
    Вывод:

    Первые 3 символа: 'Про'  
    Последние 3 символа: 'ние'  

    2. Переворот строки

    Напишите программу, которая переворачивает строку.

    Пример:
    Ввод: "привет"
    Вывод: "тевирп"


    3. Поиск подстроки

    Попросите пользователя ввести строку и подстроку, затем проверьте, содержится ли подстрока в строке.

    Пример:
    Ввод:

    Строка: "Hello, world!"  
    Подстрока: "world"  

    Вывод: "Да, подстрока найдена!"


    4. Замена подстроки

    Дана строка: "Я люблю Python, Python — лучший!"
    Замените все вхождения "Python" на "JavaScript" и выведите результат.

    Вывод:
    "Я люблю JavaScript, JavaScript — лучший!"


    5. Разделение строки

    Дана строка: "apple,banana,orange,grape".
    Разделите её по запятым и выведите каждый фрукт с новой строки.

    Вывод:

    apple  
    banana  
    orange  
    grape  

    6. Подсчёт вхождений символа

    Попросите пользователя ввести строку и символ, затем подсчитайте, сколько раз символ встречается в строке.

    Пример:
    Ввод:

    Строка: "abracadabra"  
    Символ: "a"  

    Вывод: "Символ 'a' встречается 5 раз"


    7. Удаление пробелов

    Дана строка: " Hello, world! ".
    Удалите лишние пробелы в начале, конце и между словами (оставьте только по одному пробелу между словами).

    Вывод: "Hello, world!"


    8. Извлечение цифр из строки

    Дана строка: "abc123def45gh6".
    Извлеките все цифры и выведите их как одно число.

    Вывод: 123456


    9. Форматирование номера телефона

    Дана строка: "+71234567890".
    Преобразуйте её в формат: "+7 (123) 456-78-90".

    Вывод: "+7 (123) 456-78-90"


    10. Шифр Цезаря (простой сдвиг букв)

    Напишите программу, которая сдвигает каждую букву в строке на 1 вперёд по алфавиту.

    Пример:
    Ввод: "abc"
    Вывод: "bcd"

    Усложнение: Сделайте сдвиг на любое число (например, +3).

6.9 Вопросы

  1. Понятие переменной
  2. Соглашения об именах
  3. Типы данных
  4. Арифметические и логические операции
  5. Строки и операции над ними.