Базовые конструкции языка Python: от переменных до функций
Введение в базовые конструкции Python
Python отличается простым и читаемым синтаксисом. Основные конструкции включают переменные, условные операторы, циклы, функции, списки и словари. Рассмотрим их на примере программы, которая взаимодействует с пользователем.
Как написать простую программу на Python, используя базовые конструкции?
Основной способ - последовательное выполнение шагов: объявление переменных, ввод данных, условная проверка, вывод результата.
name = input('Введите ваше имя: ')
age = int(input('Введите ваш возраст: '))
if age >= 18:
print('Привет, ' + name + '! Вы совершеннолетний.')
else:
print('Привет, ' + name + '! Вы несовершеннолетний.')
Return b print python (возврат и печать в python)
Введите ваше имя: Анна Введите ваш возраст: 20 Привет, Анна! Вы совершеннолетний.
Python a b c треугольник (вычисление треугольника по сторонам в python)
Пояснение: функция input получает строку, int преобразует её в целое число. Условный оператор if-else выполняет ветвление.
Типичная ошибка: забыть преобразовать строку в число - возникает ошибка TypeError при сравнении строки с числом. Решение: использовать int() или float().
Другая проблема: ввод нечислового значения для возраста - ошибка ValueError. Можно обработать с помощью try-except.
Как улучшить программу с помощью функций?
Выделение логики в отдельную функцию делает код переиспользуемым и понятным.
def greet(name, age):
if age >= 18:
return f'Привет, {name}! Вы совершеннолетний.'
else:
return f'Привет, {name}! Вы несовершеннолетний.'
user_name = input('Введите ваше имя: ')
user_age = int(input('Введите ваш возраст: '))
print(greet(user_name, user_age))
базовые знания языка python (базовые знания языка python)
Ошибка: забыть объявить функцию перед вызовом - NameError. Функция должна быть определена до её использования.
Как использовать тернарный оператор для сокращения кода?
Тернарный оператор позволяет записать условное выражение в одну строку.
age = int(input('Введите ваш возраст: '))
result = 'совершеннолетний' if age >= 18 else 'несовершеннолетний'
print(f'Вы {result}.')
сумма a и b python (сумма двух чисел в python)
Сложность чтения при вложенных условиях: лучше избегать глубоких тернарных конструкций.
Как добавить цикл для повторного ввода?
Добавление цикла позволяет многократно запрашивать данные, пока пользователь не введет пустую строку.
while True:
name = input('Введите имя (или Enter для выхода): ')
if name == '':
break
age = int(input('Введите возраст: '))
print(greet(name, age))
Range a b python (функция range в python)
Проблема: бесконечный цикл, если забыть break. Всегда проверяется условие выхода.
Как обработать данные нескольких пользователей?
Для хранения данных нескольких пользователей создается список словарей.
users = []
while True:
name = input('Имя (Enter для завершения): ')
if not name:
break
age = int(input('Возраст: '))
users.append({'name': name, 'age': age})
for user in users:
print(greet(user['name'], user['age']))
Имя (Enter для завершения): Анна Возраст: 20 Имя (Enter для завершения): Иван Возраст: 17 Имя (Enter для завершения): Привет, Анна! Вы совершеннолетний. Привет, Иван! Вы несовершеннолетний.
Ошибка: обращение к несуществующему ключу - KeyError. Используется метод get() с значением по умолчанию.
Как применить filter или map для обработки?
Применение функций высшего порядка позволяет компактно обработать список.
adults = filter(lambda u: u['age'] >= 18, users)
for adult in adults:
print(adult['name'] + ' совершеннолетний')
Расширенные примеры базовых конструкций Python
Генераторы списков (list comprehension)
squares = [x ** 2 for x in range(10)]
print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Синтаксис: [выражение for элемент in итерируемый_объект if условие].
Словарное включение (dict comprehension)
square_dict = {x: x**2 for x in range(5)}
print(square_dict)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Обход словаря с методом items()
person = {'name': 'Alice', 'age': 30, 'city': 'Moscow'}
for key, value in person.items():
print(f'{key}: {value}')
name: Alice age: 30 city: Moscow
Одновременная итерация по двум спискам с zip
names = ['Anna', 'Ivan', 'Olga']
ages = [25, 30, 28]
for name, age in zip(names, ages):
print(f'{name} - {age}')
Anna - 25 Ivan - 30 Olga - 28
Использование any() и all() для проверки условий
numbers = [1, 3, 5, 7, 9]
print(any(x % 2 == 0 for x in numbers))
print(all(x > 0 for x in numbers))
False True
Функция с произвольным числом аргументов (*args)
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4, 5))
15
Именованные аргументы (**kwargs)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f'{key}: {value}')
print_info(name='Bob', age=22, gender='male')
name: Bob age: 22 gender: male
Лямбда-функции и сортировка
points = [(1, 2), (3, 1), (5, 0), (2, 3)]
points.sort(key=lambda p: p[1])
print(points)
[(5, 0), (3, 1), (1, 2), (2, 3)]
Цикл for с enumerate для получения индекса
colors = ['red', 'green', 'blue']
for i, color in enumerate(colors):
print(f'{i}: {color}')
0: red 1: green 2: blue
Матч-кейс (структурное сопоставление) в Python 3.10+
def handle_command(command):
match command.split():
case ['hello']:
print('Hello!')
case ['add', x, y]:
print(float(x) + float(y))
case _:
print('Unknown command')
handle_command('hello')
handle_command('add 5 7')
Hello! 12.0