291 lines
11 KiB
Plaintext
291 lines
11 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Семинар 2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 0 (разминка)\n",
|
||
"\n",
|
||
"Даны два списка `a` и `b` (см. ниже).\n",
|
||
" \n",
|
||
"1. Выведите на экран первый элемент списка `a`, третий элемент списка `a`, последний элемент списка `a`.\n",
|
||
"2. Добавьте в список `b` элемент 7 (просто допишите в конец).\n",
|
||
"3. Замените пятый элемент списка `a` на число 8.\n",
|
||
"4. Создайте список `merged`, который включает в себя все элементы списка `a` и списка `b`.\n",
|
||
"5. Создайте новый список `с`, который получается заменой последнего элемента списка `a` на число 100. Сам список `a` измениться не должен!"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"a = [1, 0, 9, 12, 18, 34, 89, 91, 33, 127]\n",
|
||
"b = [2, 8, 9, 11, 76, 25, 44]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 1 (девочковое)\n",
|
||
"\n",
|
||
"Есть список имен:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"girls = [\"Иветта\", \"Виолетта\", \"Кассандра\", \"Вирджиния\", \n",
|
||
" \"Амелия\", \"Розамунда\", \"Янина\", \"Беатриса\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Используя список `girls`, выведите на экран следующие списки:\n",
|
||
"\n",
|
||
" [\"Виолетта\", \"Кассандра\", \"Вирджиния\", \"Амелия\"]\n",
|
||
" [\"Вирджиния\", \"Амелия\", \"Розамунда\", \"Янина\", \"Беатриса\"]\n",
|
||
" [\"Иветта\", \"Виолетта\", \"Вирджиния\", \"Амелия\"]\n",
|
||
" [\"Кассандра\", \"Амелия\", \"Розамунда\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 2 (поэлементное) \n",
|
||
"\n",
|
||
"Дан список `L`. Выведите на экран (последовательно, с новой строчки): \n",
|
||
"\n",
|
||
"* все элементы списка `L`\n",
|
||
"* логарифмированные значения элементов списка `L`"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"L = [12, 3, 8, 125, 10, 98, 54, 199]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Замените пятый элемент списка `L` на 0. Проделайте те же операции, что и раньше. Объясните, почему получаются такие результаты."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 3 (демографическое)\n",
|
||
"\n",
|
||
"В списке `age` сохранены значения возраста респондентов: \n",
|
||
"\n",
|
||
" age = [24, 35, 42, 27, 45, 48, 33]\n",
|
||
" \n",
|
||
"Создайте список `age2`, в котором будут храниться значения возраста, возведенные в квадрат.\n",
|
||
"\n",
|
||
"**Подсказка:** используйте цикл *for*."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 4 (игровое)\n",
|
||
"\n",
|
||
"Питон просит пользователя загадать (ввести с клавиатуры) целое число $k$ от 1 до 10. Питон берет это число $k$ и выводит на экран $k$-тый элемент списка `numbers`, причем $k$-ый элемент в привычном понимании, в нумерации, которая начинается с единицы. \n",
|
||
"\n",
|
||
"Список `numbers`:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"numbers = [1, 5, 6, 8, 10, 21, 25, 1, 0, -9, 9]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Пояснение:**\n",
|
||
" \n",
|
||
"*Входные данные:*\n",
|
||
"\n",
|
||
" Введите целое число от 1 до 10: 3\n",
|
||
" \n",
|
||
"*Выходные данные:*\n",
|
||
"\n",
|
||
" 6"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 5 (числовое)\n",
|
||
"\n",
|
||
"У питона есть набор любимых чисел.\n",
|
||
"\n",
|
||
" favorites = [3, 7, 11, 23, 18, 48, 81]\n",
|
||
"\n",
|
||
"Напишите программу, которая просит пользователя ввести целое число, и если оно нравится питону, на экран будет выводиться сообщение: \"Мое любимое число!\", если нет ‒ \"Эх, ну почему?\".\n",
|
||
"\n",
|
||
"*Подсказка:* чтобы проверить, принадлежит ли некоторый объект элементам списка, можно воспользоваться оператором *in*."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 6 (четное)\n",
|
||
"\n",
|
||
"Напишите программу, которая просит пользователя ввести число и, если оно чётное, выводит на экран сообщение: \"Это число чётное\", если нечётное ‒ \"Это число нечётное\".\n",
|
||
"\n",
|
||
"*Подсказка:* используйте оператор `%` для определения остатка от деления."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 7 (музыкальное)\n",
|
||
"\n",
|
||
"Напишите программу, которая принимает на вход список слов такого вида:\n",
|
||
"\n",
|
||
" words = [\"Speak \",\"to\", \"me \", \"of\", \"Florence\" ,\"And \", \"of\", \"the\", \"Renaissance\"]\n",
|
||
"\n",
|
||
"а возвращает список\n",
|
||
"\n",
|
||
" words_clean = [\"speak\", \"to\", \"me\", \"of\", \"florence\", \"and\", \"of\", \"the\", \"renaissance\"]\n",
|
||
"\n",
|
||
"Другими словами, программа убирает пробелы в словах и приводит все слова к нижнему регистру. Эту задачу можно решить через циклы, но в Python есть такая полезная вещь как списковые включения. Они работают быстрее, чем циклы, и создавать новые списки на основе старых очень удобно. Прочитать про них можно [здесь](http://pythontutor.ru/lessons/lists/#section_3) и [здесь](https://nbviewer.jupyter.org/github/allatambov/Py-programming-3/blob/master/20-04/lecture-lists-contd.ipynb).\n",
|
||
"\n",
|
||
"**Подсказка:** запросите `help()` по методам `.strip()` и `.lower()`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 8 (секретное)\n",
|
||
"\n",
|
||
"Напишите программу, которая запрашивает у пользователя пароль, и далее:\n",
|
||
"\n",
|
||
"- если пароль верный, выводит на экран сообщение \"Login success\".\n",
|
||
"- если пароль неверный, выводит на экран сообщение \"Incorrect password, try again!\" до тех пор, пока пользователь не введет верный пароль.\n",
|
||
"\n",
|
||
"Считайте, что верный пароль программе известен, то есть уже сохранен в некоторой переменной. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 9 (функциональное)\n",
|
||
"\n",
|
||
"Напишите функцию `nums()`, которая принимает на вход целое число, а возвращает список из двух элементов: целое число, предшествующее принятому на вход, и число, следующее за ним.\n",
|
||
"\n",
|
||
"**Пример:**\n",
|
||
"\n",
|
||
"*Входные данные:*\n",
|
||
"\n",
|
||
" 7\n",
|
||
"\n",
|
||
"*Выходные данные:*\n",
|
||
"\n",
|
||
" [6, 8]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 10 (счетное)\n",
|
||
"\n",
|
||
"Напишите функцию `my_log()`, которая принимает на вход список чисел, и возвращает список их натуральных логарифмов. Если число меньше или равно 0, на его месте в возвращаемом списке должно быть None.\n",
|
||
"\n",
|
||
"**Пример:**\n",
|
||
"\n",
|
||
"*Входные данные:*\n",
|
||
"\n",
|
||
" [1, 3, 2.5, -1, 9, 0, 2.71]\n",
|
||
"\n",
|
||
"*Выходные данные:*\n",
|
||
"\n",
|
||
" [0.0,\n",
|
||
" 1.0986122886681098,\n",
|
||
" 0.9162907318741551,\n",
|
||
" None,\n",
|
||
" 2.1972245773362196,\n",
|
||
" None,\n",
|
||
" 0.9969486348916096]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Задание 11 (зимнее)\n",
|
||
"\n",
|
||
"Напишите функцию `str_lower()`, которая принимает на вход строку (набор слов через пробел), а возвращает список ее элементов в нижнем регистре. \n",
|
||
"\n",
|
||
"**Пример:**\n",
|
||
"\n",
|
||
"*Входные данные:*\n",
|
||
"\n",
|
||
" \"В лесу родилась ёлочка В лесу она росла\"\n",
|
||
"\n",
|
||
"*Выходные данные:*\n",
|
||
"\n",
|
||
" ['в', 'лесу', 'родилась', 'ёлочка', 'в', 'лесу', 'она', 'росла']\n",
|
||
" \n",
|
||
"*Подсказка:* для разбиение строки на части, познакомьтесь с методом `.split()` – запросите по нему `help()`."
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.6.5"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|