Основы Python Синтаксис, Типы данных и Управляющие структуры
Python Синтаксис, Типы данных, Управляющие структуры
Вы новичок и хотите научиться программировать на Python? Если да, то этот учебник для вас, чтобы ознакомиться с основами языка.
В этом учебнике вы познакомитесь с синтаксисом Python, который довольно дружелюбен к английскому языку. Вы также узнаете, как работать с различными типами данных, условными операторами и циклами в Python.
Если у вас уже установлен Python в вашей среде разработки, запустите REPL Python и кодируйте вместе с нами. Или если вы хотите пропустить установку и начать кодировать прямо сейчас, я рекомендую перейти на Google Colab и кодировать вместе с нами.
- Исследователи из A12 представляют Satlas новую платформу искусственного интеллекта для изучения глобальных геопространственных данных, созданных искусственным интеллектом на основе спутниковых изображений.
- Сравнение результатов выпускников школы с использованием байесовского подхода с помощью R и brms
- Оптимизация поездки по Европе генетические алгоритмы и Google Maps API решают задачу коммивояжера
Привет, Python!
Прежде чем мы напишем классическую программу “Привет, мир!” на Python, вот немного информации о языке. Python – интерпретируемый язык. Что это означает?
В любом языке программирования весь исходный код, который вы пишете, должен быть преобразован в машинный код. В то время как скомпилированные языки, такие как C и C++, требуют всего машинного кода перед запуском программы, интерпретатор разбирает исходный код и интерпретирует его на лету.
Создайте скрипт на Python, введите следующий код и запустите его:
print("Привет, мир!")
Чтобы вывести “Привет, мир!”, мы использовали функцию `print()`, одну из множества встроенных функций в Python.
В этом очень простом примере обратите внимание, что “Привет, мир!” является последовательностью – строкой символов. Строки Python ограничиваются парой одинарных или двойных кавычек. Поэтому для печати любой строки сообщения вы можете использовать `print(“<message_string>”)`.
Чтение пользовательского ввода
Теперь давайте пойдем дальше и считаем некоторый ввод от пользователя с помощью функции `input()`. Вы всегда должны предупреждать пользователя, чтобы они знали, что они должны ввести.
Вот простая программа, которая принимает имя пользователя в качестве ввода и приветствует их.
Комментарии помогают улучшить читаемость вашего кода, предоставляя дополнительный контекст пользователю. Однострочные комментарии в Python начинаются с символа #.
Обратите внимание, что строка в следующем фрагменте кода предшествуется символом `f`. Такие строки называются форматированными строками или f-строками. Чтобы заменить значение переменной в форматированной строке, укажите имя переменной в фигурных скобках, как показано ниже:
# Получение ввода пользователя
user_name = input("Пожалуйста, введите ваше имя: ")
# Приветствие пользователя
print(f"Привет, {user_name}! Приятно познакомиться!")
При запуске программы вам будет предложено сначала ввести ввод, а затем будет напечатано приветственное сообщение:
Пожалуйста, введите ваше имя: Bala
Привет, Bala! Приятно познакомиться!
Перейдем к изучению переменных и типов данных в Python.
Переменные и типы данных в Python
Переменные в любом языке программирования – это контейнеры, которые хранят информацию. В коде, который мы написали до сих пор, мы уже создали переменную `user_name`. Когда пользователь вводит свое имя (строку), оно сохраняется в переменной `user_name`.
Основные типы данных в Python
Давайте рассмотрим основные типы данных в Python: `int`, `float`, `str` и `bool`, используя простые примеры, которые строятся друг на друге:
Целое число (`int`): Целые числа – это целые числа без десятичной точки. Вы можете создавать целые числа и присваивать их переменным следующим образом:
age = 25
discount = 10
Это операторы присваивания, которые присваивают значение переменной. В языках программирования, таких как C, вам придется указывать тип данных при объявлении переменных, но Python – это динамически типизированный язык. Он выводит тип данных из значения. Поэтому вы можете заново присвоить переменной значение совершенно другого типа данных:
number = 1
number = 'один'
Вы можете проверить тип данных любой переменной в Python с помощью функции `type`:
number = 1
print(type(number))
`number` – целое число:
Вывод >>>
Теперь мы присваиваем строковое значение `number`:
number = 'один'
print(type(number))
Вывод >>>
Число с плавающей точкой (`float`): Числа с плавающей точкой представляют действительные числа с десятичной точкой. Вы можете создавать переменные типа `float` следующим образом:
height = 5.8
pi = 3.14159
Вы можете выполнять различные операции – сложение, вычитание, целочисленное деление, возведение в степень и другие – над числовыми типами данных. Вот несколько примеров:
# Определение числовых переменных
x = 10
y = 5
# Сложение
add_result = x + y
print("Сложение:", add_result) # Вывод: 15
# Вычитание
sub_result = x - y
print("Вычитание:", sub_result) # Вывод: 5
# Умножение
mul_result = x * y
print("Умножение:", mul_result) # Вывод: 50
# Деление (число с плавающей точкой)
div_result = x / y
print("Деление:", div_result) # Вывод: 2.0
# Целочисленное деление (деление с округлением вниз)
int_div_result = x // y
print("Целочисленное деление:", int_div_result) # Вывод: 2
# Остаток от деления (остаток от деления)
mod_result = x % y
print("Остаток от деления:", mod_result) # Вывод: 0
# Возведение в степень
exp_result = x ** y
print("Возведение в степень:", exp_result) # Вывод: 100000
Строка (`str`): Строки – это последовательности символов, заключенные в одинарные или двойные кавычки.
name = "Алиса"
quote = 'Привет, мир!'
Булевый (`bool`): Булевы значения представляют либо `True`, либо `False`, указывая истинное значение условия.
is_student = True
has_license = False
Гибкость Python в работе с различными типами данных позволяет вам хранить, выполнять широкий спектр операций и эффективно манипулировать данными.
Вот пример, объединяющий все типы данных, которые мы изучили до сих пор:
# Использование различных типов данных вместе
age = 30
score = 89.5
name = "Боб"
is_student = True
# Проверка, превышает ли оценка порог прохождения
passing_threshold = 60.0
is_passing = score >= passing_threshold
print(f"{name=}")
print(f"{age=}")
print(f"{is_student=}")
print(f"{score=}")
print(f"{is_passing=}")
А вот и вывод:
Вывод >>>
name='Боб'
age=30
is_student=True
score=89.5
is_passing=True
Превышение основных типов данных
Предположим, что вы управляете информацией о студентах в классе. Было бы полезно создать коллекцию – для хранения информации о всех студентах – чем повторно определять переменные для каждого студента.
Списки
Списки – это упорядоченные коллекции элементов, заключенных в пару квадратных скобок. Элементы в списке могут быть одного и того же или разных типов данных. Списки изменяемы, что означает, что вы можете изменять их содержимое после создания.
Здесь `student_names` содержит имена студентов:
# Список
student_names = ["Алиса", "Боб", "Чарли", "Дэвид"]
Кортежи
Кортежи – это упорядоченные коллекции, похожие на списки, но они неизменяемы, что означает, что вы не можете изменять их содержимое после создания.
Предположим, вы хотите, чтобы `student_scores` был неизменяемой коллекцией, содержащей оценки студентов.
# Кортеж
student_scores = (85, 92, 78, 88)
Словари
Словари – это коллекции пар ключ-значение. Ключи словаря должны быть уникальными и соответствуют соответствующим значениям. Они изменяемы и позволяют связывать информацию с конкретными ключами.
Здесь `student_info` содержит информацию о каждом студенте – имена и оценки в виде пар ключ-значение:
student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}
Но подождите, есть более элегантный способ создания словарей в Python.
Мы собираемся изучить новую концепцию: генератор словарей. Не беспокойтесь, если это сразу не ясно. Вы всегда можете узнать больше и поработать с этим позже.
Но генераторы довольно интуитивно понятны. Если вы хотите, чтобы словарь `student_info` имел имена студентов в качестве ключей и соответствующие им оценки за экзамен в качестве значений, вы можете создать словарь следующим образом:
# Использование генератора словарей для создания словаря student_info
student_info = {name: score for name, score in zip(student_names, student_scores)}
print(student_info)
Обратите внимание, как мы использовали функцию `zip()` для одновременного итерирования по списку `student_names` и кортежу `student_scores`.
Output >>>
{'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}
В этом примере генератор словарей непосредственно соотносит каждое имя студента из списка `student_names` с соответствующей оценкой за экзамен из кортежа `student_scores`, чтобы создать словарь `student_info` с именами в качестве ключей и оценками в качестве значений.
Теперь, когда вы знакомы с примитивными типами данных и некоторыми последовательностями/итерируемыми объектами, перейдем к следующей части обсуждения: управляющие структуры.
Управляющие структуры в Python
При запуске скрипта Python выполнение кода происходит последовательно в том же порядке, в котором они находятся в скрипте.
Иногда вам может понадобиться реализовать логику для управления потоком выполнения на основе определенных условий или перебрать итерируемый объект для обработки его элементов.
Мы узнаем, как операторы if-else обеспечивают ветвление и условное выполнение. Мы также узнаем, как перебирать последовательности с помощью циклов и операторов управления циклом break и continue.
Оператор if
Когда вам нужно выполнить блок кода только в том случае, если определенное условие истинно, вы можете использовать оператор `if`. Если условие оценивается как ложное, блок кода не выполняется.
Рассмотрим этот пример:
score = 75
if score >= 60:
print("Поздравляю! Вы сдали экзамен.")
В этом примере код внутри блока `if` будет выполняться только если `score` больше или равен 60. Поскольку `score` равен 75, будет напечатано сообщение “Поздравляю! Вы сдали экзамен.”
Output >>> Поздравляю! Вы сдали экзамен.
Условные операторы if-else
Оператор `if-else` позволяет выполнять один блок кода, если условие истинно, и другой блок кода, если условие ложно.
Давайте построим пример с оценками:
score = 45
if score >= 60:
print("Поздравляю! Вы сдали экзамен.")
else:
print("Извините, вы не сдали экзамен.")
Здесь, если `score` меньше 60, будет выполнен код внутри блока `else`:
Вывод >>> Извините, вы не сдали экзамен.
Цепочка if-elif-else
Оператор `if-elif-else` используется, когда у вас есть несколько условий для проверки. Он позволяет проверять несколько условий и выполнять соответствующий блок кода для первого истинного условия, с которым столкнулся.
Если условия в операторе `if` и всех операторах `elif` оцениваются как ложные, выполняется блок кода оператора `else`.
score = 82
if score >= 90:
print("Отлично! Вы получили A.")
elif score >= 80:
print("Хорошая работа! Вы получили B.")
elif score >= 70:
print("Неплохо! Вы получили C.")
else:
print("Вам нужно улучшиться. Вы получили F.")
В этом примере программа проверяет `score` по нескольким условиям. Будет выполнен код внутри блока первого истинного условия. Поскольку `score` равен 82, мы получаем:
Вывод >>> Хорошая работа! Вы получили B.
Вложенные операторы if
Вложенные операторы `if` используются, когда вам нужно проверить несколько условий внутри другого условия.
name = "Alice"
score = 78
if name == "Alice":
if score >= 80:
print("Отличная работа, Алиса! Вы получили A.")
else:
print("Хороший труд, Алиса! Продолжайте в том же духе.")
else:
print("Вы делаете хорошо, но это сообщение для Алисы.")
В этом примере есть вложенный оператор `if`. Сначала программа проверяет, является ли `name` “Alice”. Если это верно, она проверяет `score`. Поскольку `score` равен 78, выполняется внутренний блок `else`, выводящий “Хороший труд, Алиса! Продолжайте в том же духе.”
Вывод >>> Хороший труд, Алиса! Продолжайте в том же духе.
Python предлагает несколько конструкций циклов для итерации по коллекциям или выполнения повторяющихся задач.
Цикл for
В Python цикл `for` предоставляет краткую синтаксическую конструкцию, позволяющую нам итерироваться по существующим итерируемым объектам. Мы можем итерироваться по списку `student_names` следующим образом:
student_names = ["Alice", "Bob", "Charlie", "David"]
for name in student_names:
print("Студент:", name)
Вышеуказанный код выводит:
Вывод >>>
Студент: Alice
Студент: Bob
Студент: Charlie
Студент: David
Цикл while
Если вы хотите выполнять определенный фрагмент кода до тех пор, пока условие истинно, вы можете использовать цикл `while`.
Давайте используем тот же список `student_names`:
# Использование цикла while с существующим итерируемым объектом
student_names = ["Alice", "Bob", "Charlie", "David"]
index = 0
while index < len(student_names):
print("Студент:", student_names[index])
index += 1
В этом примере у нас есть список `student_names`, содержащий имена студентов. Мы используем цикл `while`, чтобы перебрать список, отслеживая переменную `index`.
Цикл продолжается, пока `index` меньше длины списка. Внутри цикла мы печатаем имя каждого студента и увеличиваем `index`, чтобы перейти к следующему студенту. Обратите внимание на использование функции `len()`, чтобы получить длину списка.
Это дает тот же результат, что и использование цикла `for` для итерации по списку:
Вывод >>>
Студент: Алиса
Студент: Боб
Студент: Чарли
Студент: Дэвид
Давайте используем цикл `while`, который удаляет элементы из списка, пока список не станет пустым:
student_names = ["Алиса", "Боб", "Чарли", "Дэвид"]
while student_names:
current_student = student_names.pop()
print("Текущий студент:", current_student)
print("Все студенты были обработаны.")
Метод списка `pop` удаляет и возвращает последний элемент в списке.
В этом примере цикл `while` продолжается, пока в списке `student_names` есть элементы. Внутри цикла используется метод `pop()`, чтобы удалить и вернуть последний элемент из списка, и печатается имя текущего студента.
Цикл продолжается, пока все студенты не будут обработаны, и за пределами цикла выводится окончательное сообщение.
Вывод >>>
Текущий студент: Дэвид
Текущий студент: Чарли
Текущий студент: Боб
Текущий студент: Алиса
Все студенты были обработаны.
Цикл `for` обычно более краток и легче читается для итерации по существующим итерируемым объектам, таким как списки. Но цикл `while` может предоставить больше контроля, когда условие цикла более сложное.
Управляющие операторы цикла
`break` прерывает цикл преждевременно, а `continue` пропускает оставшуюся часть текущей итерации и переходит к следующей.
Вот пример:
student_names = ["Алиса", "Боб", "Чарли", "Дэвид"]
for name in student_names:
if name == "Чарли":
break
print(name)
Управляющий оператор прерывает цикл, когда `name` равно “Чарли”, и выводит:
Вывод >>>
Алиса
Боб
Имитация поведения цикла `do-while`
В Python нет встроенного цикла `do-while`, как в некоторых других языках программирования. Однако вы можете достичь того же поведения, используя цикл `while` с оператором `break`. Вот как вы можете имитировать цикл `do-while` в Python:
while True:
user_input = input("Введите 'exit', чтобы остановиться: ")
if user_input == 'exit':
break
В этом примере цикл будет продолжаться бесконечно, пока пользователь не введет ‘exit’. Цикл выполняется хотя бы один раз, потому что условие изначально установлено на `True`, а затем проверяется ввод пользователя внутри цикла. Если пользователь вводит ‘exit’, выполняется оператор `break`, который прерывает цикл.
Вот пример вывода:
Вывод >>>
Введите 'exit', чтобы остановиться: привет
Введите 'exit', чтобы остановиться: здравствуй
Введите 'exit', чтобы остановиться: пока
Введите 'exit', чтобы остановиться: старайся лучше!
Введите 'exit', чтобы остановиться: exit
Обратите внимание, что этот подход аналогичен циклу `do-while` в других языках, где тело цикла гарантированно выполняется хотя бы один раз, прежде чем проверяется условие.
Заключение и следующие шаги
Надеюсь, вы смогли легко выполнить этот учебник без каких-либо сложностей. Теперь, когда вы поняли основы Python, пришло время начать создавать простые проекты, применяя все концепции, которые вы усвоили. Bala Priya C – разработчик и технический писатель из Индии. Ей нравится работать на пересечении математики, программирования, науки о данных и создания контента. Ее области интересов и экспертизы включают DevOps, науку о данных и обработку естественного языка. Она любит читать, писать, программировать и пить кофе! В настоящее время она работает над изучением и обменом своими знаниями с сообществом разработчиков, создавая учебники, руководства, мнения и многое другое.