Основы написания кода на Python: переменные, условия, циклы, функции
Основные конструкции языка Python
Основной подход: использование современных возможностей Python 3
Для вывода текста в консоль применяется функция print(). Например:
print("Привет, мир!")Python m команда (запуск модуля python с флагом -m)
Для форматирования строк настоятельно рекомендуется использовать f-строки:
name = "Анна"
print(f"Привет, {name}!")How write python (как писать на python)
Как вывести текст с использованием разных методов форматирования?
Вариант 1: конкатенация строк. Используется оператор +:
name = "Анна"
print("Привет, " + name + "!")Недостаток: при конкатенации необходимо вручную преобразовывать нестроковые типы.
Вариант 2: метод format(). Позволяет вставлять значения по позиции или имени:
print("Привет, {}!".format(name))Вариант удобен для сложных шаблонов, но менее читаем, чем f-строки.
Типичные ошибки:
- IndentationError: неправильный отступ (например, пропущен пробел перед print в блоке if). Решение: использовать 4 пробела или Tab, но не смешивать.
- NameError: переменная не определена. Пример:
print(x)до присвоения x. - TypeError: попытка сложить строку и число:
print("Число " + 5). Решение: привести к строке:print("Число " + str(5)).
Как объявить переменную и указать ее тип?
В Python переменные объявляются простым присваиванием. Тип определяется автоматически. Основной способ:
x = 10
y = 3.14
name = "Python"Для явного указания типа (type hints) используется синтаксис:
x: int = 10
name: str = "Python"Type hints улучшают читаемость кода и помогают IDE, но не влияют на выполнение.
Ошибка: попытка использовать необъявленную переменную приводит к NameError. Рекомендуется инициализировать все переменные перед использованием.
Условные операторы: if, elif, else
Основной синтаксис:
x = 10
if x > 0:
print("Положительное")
elif x == 0:
print("Ноль")
else:
print("Отрицательное")Для простых условий можно использовать тернарный оператор:
result = "четное" if x % 2 == 0 else "нечетное"
print(result)Как проверить несколько условий без elif?
Можно использовать логические операторы and, or, not:
if x > 0 and x < 10:
print("Число от 1 до 9")Или оператор in для проверки принадлежности:
if x in [1, 2, 3]:
print("Одно из первых трех")Распространенная ошибка: путать = (присваивание) и == (сравнение). Python выдает SyntaxWarning, но код может работать неверно.
Циклы: for и while
Цикл for чаще всего используется для перебора последовательностей:
fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
print(fruit)С функцией range() для повторения действий заданное число раз:
for i in range(5):
print(i)Как перебрать элементы списка с индексом?
Рекомендуемый способ: функция enumerate():
for index, fruit in enumerate(fruits):
print(index, fruit)Устаревший способ: range(len(fruits)):
for i in range(len(fruits)):
print(i, fruits[i])Ошибка: бесконечный цикл while, если не обновляется условие. Всегда проверять наличие выхода.
Функции: определение и вызов
Определение функции с аннотациями типов:
def greet(name: str) -> str:
return f"Привет, {name}!"
print(greet("Мир"))Как создать функцию с необязательными параметрами?
Использование значений по умолчанию:
def power(x, n=2):
return x ** n
print(power(3)) # 9
print(power(3, 3)) # 27Для произвольного числа аргументов применяется *args и **kwargs:
def sum_all(*args):
return sum(args)
print(sum_all(1,2,3))Ошибка: изменяемые объекты как значения по умолчанию (например, список) сохраняют состояние между вызовами. Решение: использовать None и создавать новый объект внутри функции.
Расширенные примеры кода на Python
Множественное присваивание и обмен значениями
Python позволяет присваивать несколько переменных одновременно:
a, b = 1, 2
print(a, b) # 1 2Обмен значениями без временной переменной:
a, b = b, a
print(a, b) # 2 1Результат: 2 1
Распаковка последовательностей
Использование звездочки для захвата оставшихся элементов:
first, *middle, last = [1, 2, 3, 4, 5]
print(first) # 1
print(middle) # [2, 3, 4]
print(last) # 5Результат: 1 [2, 3, 4] 5
Срезы строк и списков
Строки и списки поддерживают срезы: [start:stop:step]:
s = "Python"
print(s[1:4]) # "yth"
print(s[::-1]) # "nohtyP"Результат: yth nohtyP
Генераторы списков (list comprehensions)
Создание списков в одну строку:
squares = [x**2 for x in range(10) if x % 2 == 0]
print(squares) # [0, 4, 16, 36, 64]Результат: [0, 4, 16, 36, 64]
Лямбда-функции
Анонимные функции для кратких операций:
add = lambda a, b: a + b
print(add(3, 5)) # 8
pairs = [(1, 'b'), (2, 'a'), (3, 'c')]
pairs.sort(key=lambda x: x[1])
print(pairs) # [(2, 'a'), (1, 'b'), (3, 'c')]Результат: 8 [(2, 'a'), (1, 'b'), (3, 'c')]
Работа с файлами (with open)
Чтение и запись с автоматическим закрытием:
with open('example.txt', 'w') as f:
f.write('Hello, file!')
with open('example.txt', 'r') as f:
content = f.read()
print(content)Результат: Hello, file!
Обработка исключений
Конструкция try/except/else/finally:
try:
x = int(input("Введите число: "))
result = 10 / x
except ValueError:
print("Ошибка: введите целое число")
except ZeroDivisionError:
print("Ошибка: деление на ноль")
else:
print(f"Результат: {result}")
finally:
print("Блок finally выполняется всегда")При вводе '0':
Введите число: 0 Ошибка: деление на ноль Блок finally выполняется всегда
Аргументы командной строки
Доступ к аргументам через sys.argv:
import sys
print("Имя скрипта:", sys.argv[0])
for i, arg in enumerate(sys.argv[1:], start=1):
print(f"Аргумент {i}: {arg}")Модуль random
Генерация случайных чисел:
import random
print(random.randint(1, 10)) # случайное целое
print(random.choice(['a', 'b', 'c'])) # случайный элементПример вывода: 7 b
Дата и время
Текущая дата и время:
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))Пример: 2025-04-09 10:30:00