Cognitive_technologies/лр1-2/6_seminar2.ipynb

291 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}