Перейти к содержимому

Практическое занятие 5: Функции и файлы

Научиться создавать и использовать функции, работать с файлами и подключать модули.

# Простая функция без параметров
def greet():
print("Привет, мир!")
greet() # Вызов функции
def greet(name):
print(f"Привет, {name}!")
greet("Анна")
greet("Борис")
def greet(name, greeting):
print(f"{greeting}, {name}!")
greet("Анна", "Добрый день")
greet("Борис", "Здравствуйте")
# Именованные аргументы
greet(name="Вера", greeting="Привет")
def add(a, b):
return a + b
result = add(5, 3)
print(result) # 8

Функция с возвращаемым значением и условием

Заголовок раздела «Функция с возвращаемым значением и условием»
def check_age(age):
if age >= 18:
return "Совершеннолетний"
else:
return "Несовершеннолетний"
print(check_age(25)) # Совершеннолетний
print(check_age(15)) # Несовершеннолетний
def greet(name, greeting="Привет"):
print(f"{greeting}, {name}!")
greet("Анна") # Привет, Анна!
greet("Борис", "Здравствуйте") # Здравствуйте, Борис!
def sum_all(*numbers):
return sum(numbers)
print(sum_all(1, 2, 3)) # 6
print(sum_all(1, 2, 3, 4, 5)) # 15
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Анна", age=25, city="Москва")
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # 120
# Метод 1: read() — чтение всего файла
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
# Метод 2: readlines() — чтение построчно в список
with open("example.txt", "r", encoding="utf-8") as file:
lines = file.readlines()
for line in lines:
print(line.strip())
# Метод 3: итерация по строкам
with open("example.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())
# Перезапись файла
with open("output.txt", "w", encoding="utf-8") as file:
file.write("Привет, мир!\n")
file.write("Это новая строка")
# Добавление в конец файла
with open("output.txt", "a", encoding="utf-8") as file:
file.write("\nДобавленная строка")
РежимОписание
”r”Чтение (режим по умолчанию)
“w”Запись (перезаписывает файл)
“a”Добавление (добавляет в конец)
“r+“Чтение и запись
”wb”Запись в бинарном режиме
”rb”Чтение в бинарном режиме
# Импорт всего модуля
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793
# Импорт с псевдонимом
import math as m
print(m.sqrt(16)) # 4.0
# Импорт конкретной функции
from math import sqrt
print(sqrt(16)) # 4.0
# Импорт нескольких функций
from math import sqrt, pi, sin
print(sqrt(16))
print(pi)

Создайте файл my_module.py:

def greet(name):
return f"Привет, {name}!"
def calculate_area(length, width):
return length * width
PI = 3.14159

Использование модуля:

# Вариант 1
import my_module
print(my_module.greet("Анна"))
print(my_module.calculate_area(5, 3))
# Вариант 2
from my_module import greet, calculate_area
print(greet("Анна"))
print(calculate_area(5, 3))
def analyze_numbers(numbers):
if not numbers:
return "Список пуст"
minimum = min(numbers)
maximum = max(numbers)
average = sum(numbers) / len(numbers)
return {
"минимум": minimum,
"максимум": maximum,
"среднее": round(average, 2),
"количество": len(numbers)
}
numbers = [5, 2, 9, 1, 7, 3]
result = analyze_numbers(numbers)
print(result)
def save_to_file(filename, data):
with open(filename, "w", encoding="utf-8") as file:
for item in data:
file.write(f"{item}\n")
def read_from_file(filename):
with open(filename, "r", encoding="utf-8") as file:
return [line.strip() for line in file]
# Использование
names = ["Анна", "Борис", "Вера"]
save_to_file("names.txt", names)
loaded_names = read_from_file("names.txt")
print(loaded_names)
def is_palindrome(text):
# Удаляем пробелы и приводим к нижнему регистру
text = text.replace(" ", "").lower()
return text == text[::-1]
print(is_palindrome("А роза упала на лапу Азора")) # True
print(is_palindrome("Привет")) # False
def celsius_to_fahrenheit(celsius):
return (celsius * 9/5) + 32
def fahrenheit_to_celsius(fahrenheit):
return (fahrenheit - 32) * 5/9
def convert_temperature(value, from_unit):
from_unit = from_unit.lower()
if from_unit == "c" or from_unit == "celsius":
return celsius_to_fahrenheit(value)
elif from_unit == "f" or from_unit == "fahrenheit":
return fahrenheit_to_celsius(value)
else:
return "Неизвестная единица измерения"
print(convert_temperature(0, "c")) # 32.0
print(convert_temperature(32, "f")) # 0.0
  1. Создайте функцию is_prime(n), которая проверяет, является ли число простым.

  2. Напишите функцию read_and_count(filename), которая читает файл и возвращает количество строк, слов и символов.

  3. Создайте модуль text_utils.py с функциями для работы с текстом (подсчёт слов, поиск самого длинного слова и т.д.).

  4. Напишите программу, которая:

    • Запрашивает список задач
    • Сохраняет их в файл
    • Читает файл и выводит задачи с нумерацией
def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
for num in range(1, 21):
if is_prime(num):
print(f"{num} — простое число")
def read_and_count(filename):
with open(filename, "r", encoding="utf-8") as file:
lines = file.readlines()
line_count = len(lines)
word_count = sum(len(line.split()) for line in lines)
char_count = sum(len(line) for line in lines)
return {
"строк": line_count,
"слов": word_count,
"символов": char_count
}
# Создадим тестовый файл
with open("test.txt", "w", encoding="utf-8") as file:
file.write("Привет, мир!\n")
file.write("Это тестовый файл.\n")
file.write("Третья строка.")
result = read_and_count("test.txt")
print(result)

На следующем занятии мы создадим первого веб-скрапера и сохраним данные в JSON.