Курс рассчитан на тех, кто уже пишет простые программы на Python. Этот урок — не объяснение, а самопроверка: пять коротких упражнений на то, что понадобится дальше. Если они решаются за пару минут — смело идите к следующему уроку. Если какое-то не получается, в конце урока есть ссылки, что повторить.
Заодно познакомьтесь с устройством уроков. Серые блоки — ячейки кода: нажмите «Выполнить», и код выполнится прямо в браузере. Под ячейкой виден сохранённый вывод — так он выглядел, когда урок писали; после запуска появится ваш. Код можно изменить кнопкой «Изменить» и вернуть обратно. Все ячейки урока работают в одной программе: переменная из одной ячейки видна в следующих — как в Jupyter-ноутбуке.
Списки и срезы
Список хранит значения по порядку. Индекс первого элемента — 0, отрицательный индекс считает с конца, а срез
[начало:конец] берёт кусок списка — конец в срез не входит:
scores = [72, 85, 90, 64, 88, 95]
print(scores[0], scores[-1]) # первый и последний
print(scores[1:3]) # элементы с индексами 1 и 2
print(len(scores))72 95 [85, 90] 6
В списке scores — баллы за тесты по порядку. Сохраните в last3 список из трёх последних баллов.
[-3:] — «от третьего с конца до конца».Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
last3 = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
last3 = scores[-3:]Словари
Словарь хранит пары «ключ → значение». Значение достают по ключу в квадратных скобках, так же добавляют новую пару:
stock = {"кофе": 12, "чай": 30, "сахар": 7}
print(stock["кофе"])
stock["молоко"] = 4
print(stock)12
{'кофе': 12, 'чай': 30, 'сахар': 7, 'молоко': 4}В словаре stock — остатки на складе. Сохраните в tea остаток чая, а потом добавьте в stock новый товар:
"какао", 5 штук.
словарь["новый ключ"] = значение.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
tea = ...
# добавьте в stock какао — 5 штукУпражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
tea = stock["чай"]
stock["какао"] = 5Циклы и условия
for перебирает элементы по одному, if выполняет код только при условии:
sales = [3, 0, 5, 2, 0, 4]
days_with_sales = 0
for s in sales:
if s > 0:
days_with_sales = days_with_sales + 1
print(days_with_sales)4
В списке profit — прибыль кофейни по дням (отрицательная — убыток). Посчитайте циклом сумму только
положительных значений и сохраните её в positive_total.
positive_total = 0, затем в цикле прибавляйте значение, если оно больше нуля.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
profit = [1200, -300, 450, 0, -150, 800]
positive_total = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
profit = [1200, -300, 450, 0, -150, 800]
positive_total = 0
for p in profit:
if p > 0:
positive_total = positive_total + pФункции
Функция получает аргументы и возвращает результат через return:
def with_discount(price, percent):
return price * (100 - percent) / 100
print(with_discount(200, 10))
print(with_discount(80, 25))180.0 60.0
Напишите функцию average(numbers), которая возвращает среднее арифметическое списка чисел: сумму, делённую
на количество.
sum(numbers) и len(numbers) дают сумму и количество.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
def average(numbers):
... # верните среднееУпражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
def average(numbers):
return sum(numbers) / len(numbers)Генераторы списков
Генератор списка (list comprehension) строит новый список из старого одной строкой: выражение, for
и при желании if:
prices = [120, 80, 45, 300]
print([p * 2 for p in prices])
print([p for p in prices if p < 100])[240, 160, 90, 600] [80, 45]
Сохраните в squares список квадратов чисел от 1 до 10: [1, 4, 9, …, 100]. Сделайте это одной строкой —
генератором списка.
range(1, 11) перебирает числа от 1 до 10: конец в диапазон не входит, как и в срез.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
squares = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
squares = [x ** 2 for x in range(1, 11)]Что повторить, если не получилось
| Не получилось | Что повторить |
|---|---|
| срезы | Списки в учебнике Python |
| словари | Словари |
| циклы и условия | for и if |
| функции | Как определить функцию |
| генераторы списков | List comprehensions |
Всё решилось? Отлично — в следующем уроке появится NumPy.