Вот и началось познание курса "Базовый Python"
В курсе 14 тем рассчитанных на 29 часов. При ежедневном выделении на занятия часа по три без пропусков пройти можно не напрягаясь, но мы решили дать себе знаний максимум и уложились за семь дней. При этом часть часа по два уделял занятиям на основной работе а затем дома с шести вечера до полуночи примерно по шесть часов. Ну никак не получилось 29 часов. Мой личный результат составил (7 дней) * (8 часов) = 56 часов, а это уже почти в 2 раза дольше запланированного времени.
Курс в своем составе содержал следующие темы:
1. БPy. Переменные и типы данных.
2. БРу. Строки.
3. БРу. Списки.
4. БРу. Цикл 'for'.
7. БРу. Функции.
8. БРу. Словари.
10. БРу. Предварительная обработка данных.
11. БРу. Анализ данных и оформление результатов.
13. БРу. Проект: Музыка больших городов.
14. БРу. Заключение.
Следующая тема: БPy. Переменные и типы данных.
Следующий раздел: Предобработка данных
Вернуться в оглавление: Я.Практикум
После его освоения хочется сказать, что курс достаточно познавательный и нужный, хотя и носит поверхностный характер. Из всего курса больше всего запомнил команду print() т.к. набирал её более часто. Ну и за собой заметил, что наработал постоянный навык набирать [Ctrl + Enter] в тренажере Jupyter Notebook, до такой степени, что при наборе текста в Word для перехода на новую строку нажимаю сразу две клавиши.
В процессе обучения в пачке нас попросили не выкладывать материалы курсов, но вот решение задач я вам покажу, может быть кому то и пригодится в дальнейшем, т.к. у многих студентов возникало много вопросов, ведь в тренажер заложен один правильный ответ, даже если твоё решение правильное он говорит, что ты не прав подумай ещё.
1. Переменные и типы данных. Вывод данных и арифметических операций.
1.1 Введение.
1.2 Могучий Python.
1.3 Переменные.
Задание 1
Создайте переменную, хранящую количество друзей Оушена из фильма «Одиннадцать друзей Оушена». Назовите переменную ocean_friends. Поместите в неё значение 11 с помощью оператора присваивания.
# напишите код здесь
ocean_friends = 11
print(ocean_friends)
Задание 2
У мистера Оушена появилось ещё двое друзей. Добавьте на новой строке код, который заменит значение в переменной ocean_friends на 13. Используйте оператор присваивания.
ocean_friends = 11
# напишите код здесь
ocean_friends = 13
print(ocean_friends)
Задание 3
Мы сохранили имена двух актёров в переменных. И нарушили два правила хорошего стиля. Исправьте нас, пожалуйста. Вывод на экран в этой задаче не нужен.
ocean = 'Джордж Клуни'
ocean_friend = 'Брэд Питт'
Задание 4
Мы попробовали перезаписать переменные и заменить имена актёров на имена их героев. Не получилось — какая-то синтаксическая ошибка. Проверьте первые символы названий переменных. Исправьте ошибочные названия. Вывод на экран в этой задаче не нужен.
ocean = 'Джордж Клуни'
ocean_friend = 'Брэд Питт'
ocean = 'Дэнни'
ocean_friend = 'Расти'
1.4 Функция print()
Задание 1
Таблица описывает три музыкальных трека: Исполнитель Трек Длительность (сек) Sting Shape Of My Heart 278 Sade No Ordinary Love 322 Red Hot Chili Peppers Californication 321 В коде уже объявлена переменная, которая хранит название трека исполнителя Sting из таблицы выше. Выведите значение переменной на экран функцией print().
sting_track_name = 'Shape Of My Heart'
print(sting_track_name)# выведите её значение на экран здесь
Shape Of My Heart
Задание 2
Исполнитель Трек Длительность (сек) Sting Shape Of My Heart 278 Sade No Ordinary Love 322 Red Hot Chili Peppers Californication 321 Объявите переменную, которая будет хранить длительность трека исполнителя Sade в секундах из таблицы выше. Обратите внимание: не перепутайте исполнителя Sade и исполнителя Sting. Имя переменной выберите самостоятельно, но следуйте правилам хорошего стиля: например, начинайте название с маленькой (строчной) буквы. Выведите значение переменной на экран функцией print().
sade_time_sec = 322# объявите переменную здесь
print(sade_time_sec)# выведите её значение на экран здесь
322
1.5 Знакомство с данными.
Задание 1
Посчитайте долю носителей английского (native_speakers) от общего числа владеющих этим языком (total_speakers). Результат сохраните в переменной native_speakers_part. Выведите на экран её значение.
native_speakers = 378.2
total_speakers = 1121
native_speakers_part = native_speakers / total_speakers# напишите ваш код здесь
print (native_speakers_part)
Задание 2
Посчитайте, сколько выучивших японский язык как иностранный приходится на одного владеющего этим языком?
Результат выведите на экран.
jap_total_speakers = 128.3
jap_native_speakers = 128.2
print ((jap_total_speakers - jap_native_speakers)/ jap_total_speakers) #напишите ваш код здесь
Задание 3
Из прошлых уроков вы знаете, что первый фильм в истории человечества вышел на экраны в январе 1896 года. Эту дату можно считать годом рождения кинематографа (хоть и сняли эту короткометражку в 1895 году). Посчитайте, сколько лет исполнилось кинематографу в 2020 году. Результат выведите на экран.
first_movie_year = 1896
target_year = 2020
print (target_year - first_movie_year) # напишите ваш код здесь
1.6 Арифметические операции.
1.7 Арифметические данные и обработка ошибок.
Задание 2
Код находит отношение двух величин: числа людей, которые выучили японский как иностранный, к общему числу людей, знающих японский. Из-за неправильного значения переменной код приводит к ошибке. Запустите программу и убедитесь, что произойдёт ошибка ZeroDivisionError. Оберните строчку с print() в оператор try-except. В случае возникновения ошибки выводите на экран сообщение 'Деление на ноль!'. Менять значения переменных не нужно.
jap_total_speakers = 0
jap_native_speakers = 128.2
try:
print((jap_total_speakers - jap_native_speakers) / jap_total_speakers)
except:
print('Деление на ноль!')
1.8 Типы данных.
Задание 1
Создайте переменную de_website_part, хранящую долю сайтов на немецком языке в рейтинге 10 млн самых популярных сайтов. Какой это тип данных? Проверьте своё предположение: выведите на экран тип объекта из переменной de_website_part.
de_website_part = 0.06 # напишите код здесь
print (type(de_website_part))
Задание 2
Выведите на экран типы переменных chi_language и chi_total_speakers на отдельных строчках.
chi_language = 'китайский'
chi_total_speakers = 1107
# напишите код здесь
print (type(chi_language))
print (type(chi_total_speakers))
Задание 3
Перед вами программа, вычисляющая количество сайтов на русском языке в списке из 10 млн самых популярных сайтов в мире. В переменной russian_web_part мы сохранили долю русского языка в этом списке, а в переменной web_popular — количество сайтов, то есть 10 млн. Затем мы перемножили их в переменной russian_web_popular. Каким будет тип объекта в russian_web_popular? Выведите на экран сначала значение, затем тип переменной russian_web_popular на разных строчках.
russian_web_part = 0.061
web_popular = 10000000
russian_web_popular = web_popular * russian_web_part
# напишите код здесь
print(russian_web_popular)
print(type(russian_web_popular))
1.9 Преобразование типов.
eng_total_speakers = '1121abc'
print(int(eng_total_speakers))
Задание 2
Преобразуйте значение переменной fra_total_speakers из типа str в тип float. Для этого примените функцию float() и поместите результат в ту же переменную. Определите тип объекта после преобразования функцией type() и выведите результат на экран.
fra_total_speakers = '284.9'
# напишите код здесь
fra_total_speakers = float(fra_total_speakers)
print(type(fra_total_speakers))
1.10 Заключение.
Задание 1
Сохраните в переменной favorite_character имя любого героя из кино или литературы. Напечатайте на экран длину содержимого переменной.
favorite_character = 'Дмитрий Нагиев'# 'напишите имя персонажа вместо комментария'
#напишите ваш код здесь
print(len(favorite_character))
Задание 2
Перед вами фрагмент стихотворения Сергея Есенина: Белая берёза Под моим окном Принакрылась снегом, Точно серебром.
На пушистых ветках Снежною каймой Распустились кисти Белой бахромой. Нейросеть, которую мы уволили, пыталась выдать его за своё творчество, но мы, конечно же, сразу ей не поверили. Сохраните отрывок стихотворения в переменной в виде многострочной строки. Выведите содержимое переменной на экран.
poetry = '''Белая берёза
Под моим окном
Принакрылась снегом,
Точно серебром.
На пушистых ветках
Снежною каймой
Распустились кисти
Белой бахромой.
'''
#выведите значение переменной на экран
print(poetry)
1.11 Проверочные задания. Переменные и типы данных. Вывод данных.
Вернуться в Начало статьи
2.1 Введение.
2.2 Строки в Python/
2.3 Индексы.
Задание 1
С помощью неотрицательного индекса выведите на экран символ e из строки в переменной word.
word = 'привет'
print(word[4]) #напишите ваш код здесь
Задание 2
Примените отрицательный индекс, чтобы вывести на экран символ e из строки в переменной.
word = 'привет'
print(word[-2])#напишите ваш код здесь
2.4 Срезы.
Задание 1
Переменная word хранит строку sentence. С помощью среза выведите на экран подстроку со словом ten.
word = 'sentence'
# напишите ваш код здесь
print (word[3:6])
Задание 2
Получите подстроку из пяти первых символов строки string и выведите её на экран.
string = 'abracadabra'
#напишите ваш код здесь
print(string[0:5])
2.5 Операции над строками.
Задание 1
Барта Симпсона из мультсериала «Симпсоны» снова наказали. Помогите ему написать на доске 100 раз “I will not sleep through my education” (англ. «я не буду спать во время обучения»). Каждый раз эта фраза должна появляться с новой строки.
print('I will not sleep through my education\n' * 100)
Задание 2
Сложите строку start с одной из переменных: first_choice, second_choice, third_choice — на ваш выбор. Обратите внимание, что складывать нужно именно с переменной, а не явно повторять строку, которая в ней хранится. Результат сложения сохраните в переменную с именем result. Тогда функция print() выведет строку-результат на экран.
start = 'Мне бы хотелось отправиться в '
first_choice = 'Париж'
second_choice = 'Рим'
third_choice = 'Нью-Йорк'
# напишите ваш код здесь
result = start + second_choice
print(result)
2.6 Методы строк.
Задание 1
Методом replace() замените подстроку лень на дисциплина. Сохраните результат в переменную phrase и выведите на экран её значение.
phrase = 'Чтобы закончить этот курс, нужна лень'
phrase = phrase.replace('лень','дисциплина') # замените подстроку здесь
print(phrase) # выведите значение переменной на экран здесь
Задание 2
Преобразуйте строку к нижнему регистру и сохраните результат в переменную word_to_lower. После этого выведите значение переменной word_to_lower на экран.
word = 'DaTa ScIeNtIsT'
word_to_lower = word.lower() # приведите к нижнему регистру здесь
print(word_to_lower) # выведите значение переменной word_to_lower на экран здесь
Задание 3
Найдите индекс вхождения подстроки уроки в строку quote.
quote = 'Праздновать успех — это хорошо, но более важно извлекать уроки из неудач'
ind = quote.find('уроки') # напишите ваш код здесь
print(ind)
2.7 F - строки.
Задание 1
С помощью правил f-строк выведите на экран строку: Эйфелева башня находится в Париже, и её высота составляет 300 метров. Название города и высоту вставьте в строку из переменных 'city' и "height".
city = 'Париж'
height = 300
print(f'Эйфелева башня находится в {city}е, и её высота составляет {height} метров.') # измените эту строчку
Задание №2
Методом ""format()"" создайте строку с подстановкой переменных:
Театр-музей художника Дали находится в автономном сообществе Каталония.
place = 'Театр-музей'
last_name = 'Дали'
location = 'Каталония'
print('{0} художника {1} находится в автономном сообществе {2}.'.format(place,last_name,location)) # измените эту строчку
2.8 Заключение.
2.9 Проверочные задания. Строки.
Задание 1 из 10 Что будет, если умножить строку на целое число? Выберите один вариант.
Строка
Задание 2 из 10 Что получится, если умножить строку на вещественное число?
Строка
Задание 4 из 10 Что называют длиной строки?
Количество символов в строке
Задание 5 из 10 Что получится в результате такого среза? name = 'Clint Eastwood' print(name[10:])
wood
Задание 6 из 10 Что войдёт в такой срез? name = 'Clint Eastwood' print(name[6:9])
Eas
Задание 7 из 10 Что получится в результате такого среза? name = 'Clint Eastwood' print(name[:5])
Clint
Задание 8 из 10 Каким будет результат этого среза? name = 'Clint Eastwood' print(name[100:])
Пустая строка
Задание 9 из 10 Как объявить многострочную строку? Выберите несколько вариантов.
phrase = '''Это многострочная строка'''
phrase = """Это многострочная строка"""
Задание 10 из 10 Выберите правильные варианты форматирования строк.
city = 'Moscow' country = 'Russia' phrase = f'{city} is the capital of {country}'
Вернуться в Начало статьи
3.1 Введение.
3.2 Списки - основы.
Задание 1
В переменную duration запишите первые пять значений из столбца «Продолжительность (мин)»: 142, 175, 152, 195, 201. Выведите на экран содержимое переменной.
duration = [142,175,152,195,201] #сление значений
print(duration)
Задание 2
Запишите в список значения из первой строки таблицы с фильмами. Результат сохраните в переменную first_row и выведите на экран её содержимое. Строки должны иметь тип str, целые числа — int, а вещественные числа — float.
first_row = ['Побег из Шоушенка','США',1994,'драма',142,9.111] #создайте список здесь
print(first_row) #напечатайте список здесь
3.3 Индексы и срезы.
Задание 1
В списке second_row хранятся значения второй строки таблицы. Получите по индексу страну производства фильма. Сохраните значение в переменную country. Выведите на экран содержимое country.
second_row = ['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730]
country = second_row[1] # напишите ваш код здесь
print (country) #выведите на экран здесь
Задание 2
Получите срез значений:
начало среза — год выпуска, 1972;
конец — продолжительность, 175.
Сохраните срез в переменную movie_slice.
second_row = ['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730]
movie_slice = second_row[2:5] #напишите ваш код здесь
print(movie_slice)
3.4 Добавление и удаление элементов.
Задание 1¶
В списке stalker_info — данные о фильме «Сталкер». Но не хватает значений из последних трёх колонок: жанр — 'фантастика, драма, детектив', продолжительность — 163, рейтинг — 8.083. Добавьте эти значения в список методом extend() в том же порядке. Результат выведите на экран.
stalker_info = ['Сталкер', 'СССР', 1979]
stalker_info.extend(['фантастика, драма, детектив',163,8.083]) # используйте метод extend() здесь
print(stalker_info) # выведите список на экран здесь
3.5 Сложение и умножение списков.
Задание 1
Сложите два списка в том же порядке, в котором они объявлены. Складывайте именно переменные first_part и second_part. Сохраните результат в переменной movie_info и выведите на экран её содержимое.
first_part = ['Криминальное чтиво', 'США', 1994]
second_part = ['триллер, комедия, криминал', 154, 8.619]
movie_info = first_part + second_part # создайте переменную movie_info здесь
print (movie_info) # здесь выведите получившийся список movie_info на экран
Задание 2
Сохраните в переменную список из 100 нулей. Для этого умножьте список с одним 0 на 100. Содержимое переменной выведите на экран.
zeros = [0]
zeros = zeros * 100 #напишите ваш код здесь
print (zeros)
3.6 Сортировка.
Задание 1
Вызовите метод sort(), чтобы отсортировать список movies по возрастанию. Выведите результат на экран.
movies = ['Хороший, плохой, злой', 'Криминальное чтиво', 'Бойцовский клуб', 'Харакири', 'Сталкер']
movies.sort() # отсортируйте список здесь
print(movies) # выведите список на экран здесь
Задание 2
Отсортируйте список movies_duration по убыванию методом sort(). Выведите результат на экран.
movies_duration = [142, 175, 152, 195, 201, 154, 178, 139]
movies_duration.sort(reverse=True) # отсортируйте список здесь
print(movies_duration) # выведите список на экран здесь
Задание 3
Отсортируйте по убыванию список movies_duration. Но на этот раз вызовите функцию sorted(). Результат сохраните в переменной movies_duration_sorted и выведите на экран.
movies_duration = [142, 175, 152, 195, 201, 154, 178, 139]
movies_duration_sorted = sorted(movies_duration, reverse=True) # напишите ваш код здесь
print(movies_duration_sorted) # напечатайте получившийся список здесь
3.7 Поиск элементов.
Задание 1
С помощью метода index() найдите номер элемента списка band_list c именем гитариста группы Red Hot Chili Peppers Джона Фрушанте. Сохраните индекс в переменной guitarist_ind и выведите её на экран.
band_list = ['Энтони Кидис', 'Фли', 'Джон Фрушанте', 'Чад Смит']
guitarist_ind = band_list.index('Джон Фрушанте') # напишите ваш код здесь
print (guitarist_ind) # выведите значение на экран здесь
3.8 Списки и строки.
Задание 1
Разбейте строку phrase на список слов с именами героев мультфильмов. Разделителем служит символ # . Сохраните результат в переменной words.
phrase = 'Aladdin#Esmeralda#Hercules#Mulan'
words = phrase.split('#') #напишите ваш код здесь
print(words)
Задание 2
Соедините названия станций московского метро из списка stations в строку с разделителем >. Результат сохраните в переменную info.
stations = ['Кропоткинская', 'Парк культуры', 'Фрунзенская', 'Спортивная']
info = '>'.join(stations) # напишите ваш код здесь
print(info) # нужно получить 'Кропоткинская>Парк культуры>Фрунзенская>Спортивная'
3.9 Заключение.
Шпаргалка темы:
https://code.s3.yandex.net/data-analyst/praktikum_data_analysis_takeaways_basicPython_theme3.pdf.
3.10 Проверочные задания. Списки.
Задание 1 из 10 Какие элементы могут быть в списке? Выберите один вариант.
Любые объекты
Задание 2 из 10 Что называют длиной списка? Выберите один вариант.
Количество элементов в списке
Задание 3 из 10 Какая функция найдёт длину списка?
len()
Задание 4 из 10 Что получится, если сложить два списка и более?
Список
Задание 5 из 10 Если умножить список на целое число, что получится?
Список
Задание 6 из 10 Что получится, если умножить список на вещественное число?
Ошибка
Задание 7 из 10 Какие методы применяют к спискам? Выберите несколько вариантов.
append()
extend()
Задание 8 из 10 С какого числа начинается нумерация в списке?
0
Задание 9 из 10 Какой метод добавит ровно один элемент в конец списка?
append()
Задание 10 из 10 Какой метод добавит несколько элементов в конец списка за одну операцию?
extend()
Вернуться в Начало статьи
4.1 Введение.
4.2 Понятие цикла. Перебор элементов списка.
Задание 1
С помощью цикла for переберите и выведите на экран элементы списка duration_list — каждый с новой строки.
duration_list = [142, 175, 152, 195]
for i in duration_list:# напишите цикл for здесь
print(i)
Задание 2
В цикле for выведите на экран каждый элемент списка movie_info с новой строки.
movie_info = ['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521]
# напишите цикл for здесь
for i in movie_info:
print (i)
4.3 Перебор элементов списка. Функция range()
Задание 1
Инопланетяне оставляют загадочные послания каждый день. Помогите им: напечатайте сообщение ALIENS на экране 100 раз с помощью цикла for.
for i in range(100):
print('ALIENS') # напечатайте ваш код здесь
Задание 2
В списке movies_duration продолжительность нескольких фильмов указана в минутах. Их показывают с рекламой, поэтому длительность каждого фильма увеличивается на 2 минуты. Прибавьте 2 к каждому элементу списка.
movies_duration = [142, 175, 152, 195, 201]
for i in range(len(movies_duration)): # напишите ваш код здесь
movies_duration[i] += 2
print(movies_duration)
4.4 Циклы и встроенные функции для обработки списков.
Встроенная функция max(), min():
movies_duration = [142, 175, 152, 195, 201, 154, 178, 139, 133, 163, 136]
max_duration = max(movies_duration)
print (max_duration)
Задание 2
Найдите суммарный балл с помощью встроенной функции и сохраните его в переменную total. Удалите комментарий, начинающийся с #, и допишите ваш код на той же строке.
marks = [90, 85, 83, 92]
total = sum(marks) # напишите ваш код здесь
print(total)
Задание 3
С помощью встроенной функции найдите максимальный балл в списке marks и сохраните в переменную max_mark.
marks = [90, 85, 83, 92]
max_mark = max(marks) # напишите ваш код здесь
print(max_mark)
4.5 Обработка списков с помощью циклов. Продолжение.
Задание 1
Найдите факториал числа 10 с помощью цикла for и сохраните значение факториала в переменной fact. Выведите полученное значение на экран.
number = 10
fact = 1 # присвойте начальное значение
# напишите цикл
for i in range(1,number+1):
fact *= i
print (fact)
Задание 2
Найдите факториал числа 10 с помощью функции factorial() из модуля math. Результат сохраните в переменной fact и выведите на экран.
import math
number = 10
fact = math.factorial(number) # напишите ваш код здесь
print(fact)
4.6 Заключение
Шпаргалка темы.
https://code.s3.yandex.net/data-analyst/praktikum_data_analysis_takeaways_basicPython_theme4.pdf
4.7 Проверочные задания. Цикл for
Задание 1 из 10 Циклы нужны, чтобы вызывать одни и те же команды несколько раз. Как называется каждый такой повтор?
Итерацией
Выводом цикла
Задание 2 из 10 Где объявляют переменную-итератор?
В заголовке цикла for
Задание 3 из 10 Цикл выведет на экран несколько чисел. Назовите их, не запуская код.
for i in range(10): print(i)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Задание 4 из 10 Где находятся инструкции, которые выполняет цикл?
В теле цикла
Задание 5 из 10 Сколько инструкций может выполнить цикл за одну итерацию?
Сколько угодно
Задание 6 из 10 Для чего используют переменную-счётчик? Выберите один вариант.
Накопить результат вычислений
Задание 7 из 10 Как сложить все значения списка numbers?
numbers = [10, 100, 1000, 10000]
sum_of_numbers = 0
for i in range(len(numbers)): sum_of_numbers += numbers[i]
print(sum_of_numbers)
Задание 8 из 10 Какой код поменяет значения в списке numbers? Выберите несколько вариантов.
numbers = [1, 2, 3, 4, 5]
for i in range(len(numbers)): numbers[i] *= 10
numbers = [1, 2, 3, 4, 5]
for i in range(len(numbers)): numbers[i] += 10
Задание 9 из 10 Можно ли заменить цикл в коде на встроенную функцию Python? import math
fact = 1
Да, можно — на math.factorial()
Да, можно — на sum()
Да, можно — на max()
Задание 10 из 10 Результат цикла for можно сохранить в новый список. Какой метод или какую функцию для этого использовать? Выберите один вариант.
append()
Вернуться в Начало статьи
5.1 Введение.
5.2 Список списков.
5.3 Циклы по вложенным спискам.
Задание №1
Выведите на экран столбец с жанрами фильмов таблицы movies_table. Каждое значение выводите на новой строке.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
for row in movies_table: # напишите ваш код здесь
print (row[3])
Задание №2
Выведите на экран столбец с годом релиза из таблицы movies_table. Каждое значение выводите на новой строке.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
for i in movies_table:
print(i[2]) # напишите ваш код здесь
5.4 Циклы по вложенным циклам. Продолжение.
Задание №1
Список списков field описывает игровое поле в «Крестиках-ноликах». Каждый его элемент — список из крестиков и ноликов, расположенных в одной строке. Выведите на экран список списков с помощью вложенных циклов for: каждый элемент общего списка выводите на новой строке; элементы подсписка отделяйте друг от друга одним пробелом. В вашем коде не должно быть квадратных скобок.
field = [['X', 'X', 'O'], ['O', 'X', 'O'], ['O', 'X', 'X']]
# напишите ваш код здесь
for row in field:
for col in row:
print (col, end=' ')
print()
5.5 Сумма значений в колонке.
Задание №1
В списке списков sales_info хранится число продаж пяти филиалов компании. С помощью цикла посчитайте сумму продаж всех филиалов. Результат сохраните в переменную total. Тогда функция print() выведет его на экран.
# [название филиала, количество продаж]
sales_info = [
['центральный', 12210],
['западный', 7612],
['восточный', 8110],
['южный', 5720],
['северный', 9798]
]
total = 0 # присвойте начальное значение
# напишите ваш код здесь
for sales in sales_info:
total += sales[1]
print(total)
Задание №2
В списке списков movies_table найдите сумму всех значений рейтинга.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
rating_total = 0# присвойте начальное значение счётчику
# напишите ваш код здесь
for rating in movies_table:
rating_total += rating[5]
print(rating_total)
5.6 Добавление столбца в таблицу.
Задание №1
В конец каждого вложенного списка добавьте тип фильма: 'полнометражный'.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
# напишите ваш код здесь
for movie in movies_table:
movie.append('полнометражный')
for movie in movies_table:
for elem in movie:
print(f'{elem:<45}', end='')
print()
Задание №2
После названия каждого фильма добавьте ячейку о качестве видео — 'FullHD'.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
# напишите ваш код здесь
for movie in movies_table:
movie.insert(1,'FullHD')
for movie in movies_table:
for elem in movie:
print(f'{elem:<45}', end='')
print()
5.7 Анализ значений в нескольких столбцах.
Задание №1
В каждой строке таблицы — данные о выручке магазинов в разных регионах: элемент с индексом 1 — выручка за первое полугодие; с индексом 2 — за второе. Добавьте в конец каждого вложенного списка сумму продаж за год.
sales = [
['Московская область',105820,112180],
['Ленинградская область',85899,91021],
['Самарская область',35010,32001],
['Ростовская область',37011,39595]
]
# напишите ваш код здесь
for sale in sales: # перебираем списки
year = (sale[1] + sale[2])
sale.append(year) # добавляем полученное значение в конец текущего списка
print(sales)
5.8 Сортировка списка списков.
5.9 Заключение.
Заключение
В этой теме вы познакомились с вложенными списками — их элементами являются другие списки. Вложенные списки помогают отразить таблицы в Python, но это ещё не всё — скоро вы познакомитесь с новой структурой данных. Чтобы ничего не забыть, скачайте шпаргалку темы.
5.10 Проверочные задания. Вложенные списки.
Проверочные задания. Вложенные списки
Чтобы пройти тест нужно правильно ответить на 5 вопросов из 10. Время на прохождение: 10 минут
Задание 1 из 10 Какие из этих списков вложенные? Выберите несколько вариантов.
Правильный ответ [[7], [7], [7]]
Правильный ответ [[7, 7, 7]]
[7] Элементы вложенного списка — другие списки. В них может быть всего по одному элементу, как в примере [[7], [7], [7]]. Один список может быть целиком вложен в другой, вот так: [[7, 7, 7]]. Практической пользы в такой организации немного. Но использовать вложенные списки всё равно стоит — они помогут упорядочить данные.
Задание 2 из 10 Какой код выведет число 2? matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Правильный ответ print(matrix[0][1])
Внутренние элементы вложенного списка перебирают с помощью индексов или в цикле for. И в том и в другом случае от общего уровня нужно перейти к уровню подсписка. С помощью индексов это делают так: сначала указывают индекс подсписка, затем — индекс элемента. Число 2 находится в первом списке на втором месте. Значит, его вызовет код matrix[0][1].
Задание 3 из 10 Какой код выведет первый элемент каждого подсписка? matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Правильный ответ for row in matrix: print(row[0])
Первый элемент каждого подсписка — это первая «колонка» списка matrix. Вывести такую колонку можно в цикле for. На каждой итерации код выведет первый элемент подсписка. Не забудьте, что его индекс 0.
Задание 4 из 10 Что перебирает первый цикл for? matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for row in matrix: for col in row: print(col, end=' ') print()
Правильный ответ Каждый вложенный список
Во вложенном списке несколько уровней. Чтобы добраться до всех элементов, используют вложенный цикл for. Первый цикл перебирает элементы списка matrix — это тоже списки. Итератор row принимает значение каждого из них по очереди. Значения внутри подсписков перебирает уже второй цикл. В коде нет индексов — значит, итератор принимает значение каждого элемента, а не только первого.
Задание 5 из 10 Что выведет на экран код? matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for row in matrix: for col in row: print(col, end=' ') print()
Правильный ответ 1 2 3 4 5 6 7 8 9
Иногда сложно представить, что происходит на каждом этапе вложенного цикла. Стоит разобрать код построчно: «Итератор row принимает значение первого подсписка, а итератор col перебирает все его значения. Затем первый цикл начинается снова — итератор row принимает значение второго подсписка...» и т. д. В этом коде второй цикл печатает один элемент за одну итерацию, добавляя в конец пробел. За это отвечает параметр end. Функция print() в пятой строчке кода относится не ко второму циклу, а к первому. Она добавит вывод с новой строки после каждого подсписка.
Задание 6 из 10 В таблицу из списка списков нужно добавить новый столбец. Какие методы можно использовать? Выберите несколько вариантов.
Правильный ответ append()
Правильный ответ insert()
Новый столбец можно создать так: добавить в каждый подсписок один новый элемент. Можно применить метод для списков append() — он добавит по элементу в конец подсписка. Чтобы вставить элемент в любое место, используют метод insert().
Задание 7 из 10 Какой код добавит новую колонку после названия фильма? movies = [ ['Одержимость', 106], ['Школа рока', 109], ['Ла-ла Ленд', 128], ]
Правильный ответ for movie in movies: movie.insert(1, 'США')
Для такой задачи подойдёт метод insert(). Его используют, чтобы добавить элемент в любое место списка. Для этого в аргументе указывают индекс — позицию нового элемента.
Задание 8 из 10 Какой код посчитает суммарную продолжительность фильмов? movies = [ ['Одержимость', 106], ['Школа рока', 109], ['Ла-ла Ленд', 128], ]
Правильный ответ total = 0
for movie in movies: total += movie[1]
Весь секрет в индексах. Чтобы сложить длительность фильмов, нужно извлечь второй элемент каждого подсписка. Цикл перебирает каждый подсписок и выбирает элемент с индексом 1, прибавляя его к значению в счётчике total. Остальные варианты не сработают — в счётчике будут складываться разные типы данных, и произойдёт ошибка.
Задание 9 из 10 Во второй и третьей колонках — значения рейтингов на платформах Кинопоиск и IMDb. Какой код посчитает средний рейтинг каждого фильма и добавит значения в качестве нового столбца? movies = [ ['Одержимость', 8.3, 8.5], ['Школа рока', 7.2, 7.1], ['Ла-ла Ленд', 7.9, 8.0], ]
Правильный ответ for movie in movies: avg_rating = (movie[1] + movie[2]) / 2 movie.append(avg_rating)
for movie in movies: avg_rating = (movie[2] + movie[3]) / 2 movie.append(avg_rating)
Для такой задачи конструкция со счётчиком не подойдёт. Средний рейтинг нужно посчитать для каждого фильма, поэтому результат вычислений лучше сохранять внутри цикла for. На каждой итерации в переменную avg_rating записывается средний рейтинг фильма. Метод append() добавит его в конец подсписка. Так получится новая колонка из трёх значений. И не забудьте про нумерацию: у второй и третьей колонки индексы 1 и 2 соответственно.
Задание 10 из 10 Какой код отсортирует списки по возрастанию продолжительности фильмов? Выберите несколько вариантов. movies = [ ['Ла-ла Ленд', 128], ['Одержимость', 106], ['Школа рока', 109], ]
Правильный ответ movies_sorted = sorted(movies, key=lambda row: row[1])
Правильный ответ movies_sorted = sorted(movies, key=lambda row: row[1], reverse=False)
Метод sorted() используют, чтобы отсортировать значения. Параметр метода reverse управляет порядком сортировки. Если передать параметру значение True, списки будут расположены по убыванию, если False — по возрастанию. Но значение параметра можно и не указывать — тогда списки будут отсортированы от меньшего к большему.
Вернуться в Начало статьи
6.1 Введение
6.2 Булев тип данных
6.3 Логические выражения и операторы сравнения
6.4 Условный оператор
Задание 1
С помощью условного оператора проверьте рейтинг фильма «Крёстный отец». Если он выше или равен 8.5, выведите на экран сообщение 'Высокий рейтинг', иначе — 'Обычный рейтинг'.
movie_rating = 8.73 # рейтинг фильма «Крёстный отец»
# напишите ваш код здесь
if movie_rating >=8.5:
print('Высокий рейтинг')
else:
print('Обычный рейтинг')
Задание 2
Проверьте год выхода фильма «Бойцовский клуб»: если он вышел после 2000 года, выведите на экран 'Да'; если в 2000 году или раньше — 'Нет'. Для этого вызовите условный оператор и обратитесь к нужному элементу списка по индексу.
movie_info = ['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644]
# напишите ваш код здесь
if movie_info[2]>2000:
print('Да')
else:
print('Нет')
6.5 Дополнительные ветки кода
Задание №1
переведите оценки из стобалльной системы в пятибалльную по этим правилам: оценка 2: от 0 до 59 баллов; оценка 3: от 60 до 72 баллов; оценка 4: от 73 до 84 баллов; оценка 5: от 85 до 100 баллов. По мере прохождения по списку печатайте результаты на экране — как в примере со списком years. Каждую оценку выводите на новой строке.
marks = [91, 35, 65, 89, 78, 93]
# напишите ваш код здесь
for i in marks:
if 0<i<=59:
print(2)
if 60<i<=72:
print(3)
if 73<i<=84:
print(4)
if 85<i<=100:
print(5)
Задание №2
Перед вами список со странами выхода некоторых фильмов. Для каждого элемента напечатайте сообщение в зависимости от названия страны: для СССР напечатайте 'Фильм вышел в СССР.'; для США — 'The movie was released in USA.'; для Италии — 'Il film e stato rilasciato in Italia.'; для любой другой страны — 'Страна не определена.'. Каждое сообщение выводите на новой строке.
countries = ['СССР', 'Новая Зеландия', 'Италия', 'Италия', 'СССР', 'США']
# напишите ваш код здесь
for i in countries:
if i == 'СССР':
print('Фильм вышел в СССР.')
elif i == 'США':
print('The movie was released in USA.')
elif i == 'Италия':
print('Il film e stato rilasciato in Italia.')
else:
print('Страна не определена.')
6.6 Фильтр для таблицы
Задание №1
С помощью фильтра извлеките из movies_table фильмы, снятые в США. Результат сохраните в movies_filtered. Тогда цикл for выведет результат на экран.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
movies_filtered = [] # пустая переменная для хранения результатов
# напишите ваш код здесь
for movies in movies_table:
if movies[1] == 'США':
movies_filtered.append(movies)
for movie in movies_filtered: # для каждого списка в списке
for elem in movie: # перебираем элементы очередного списка
print(f'{elem:<45}', end='') # выравнивание каждого элемента по левому краю с фиксированной шириной строки 45
print() # после вывода очередной строки на экран переводим на новую строку
Задание №2
С помощью фильтра извлеките из movies_table фильмы с рейтингом выше 8.6. Результат сохраните в movies_filtered. Тогда цикл for выведет результат на экран.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
movies_filtered = [] # здесь будет отфильтрованный список списков
# напишите ваш код здесь
for movies in movies_table:
if movies[5] > 8.6:
movies_filtered.append(movies)
for movie in movies_filtered: # для каждого списка в списке
for elem in movie: # перебираем элементы очередного списка
print(f'{elem:<45}', end='') # выравнивание каждого элемента по левому краю с фиксированной шириной строки 45
print() # после вывода очередной строки на экран переводим на новую строку
6.7 Сложные логические выражения
Задание №1
Оставьте в списке списков movies_filtered информацию только о тех фильмах таблицы movies_table, которые вышли в США и имеют хронометраж более 150 минут.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
# создайте пустой список movies_filtered здесь
movies_filtered=[]
# напишите ваш код здесь
for movies in movies_table:
if movies[1] == 'США' and movies[4]>150:
movies_filtered.append(movies)
for movie in movies_filtered:
for elem in movie:
print(f'{elem:<45}', end='')
print()
Задание №2
Сохраните в movies_filtered информацию только о тех фильмах таблицы, которые либо вышли в 1994 году, либо имеют рейтинг ниже 8.5.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
movies_filtered = [] # создайте пустой список movies_filtered здесь
# напишите ваш код здесь
for movies in movies_table:
if movies[2] == 1994 or movies[5] < 8.5:
movies_filtered.append(movies)
for movie in movies_filtered:
for elem in movie:
print(f'{elem:<45}', end='')
print()
6.8 Счетчики
Задание №1
Посчитайте триллеры в movies_table. Результат сохраните в thrillers_count — тогда функция выведет его на экран.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
thrillers_count = 0 # присвойте начальное значение
# напишите ваш код здесь
for movies in movies_table:
if 'триллер' in movies[3]:
thrillers_count += 1
print(thrillers_count)
Задание №2
Посчитайте фильмы, которые вышли после 1990 года. Результат сохраните в переменную after_ninety_count.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
after_ninety_count = 0 # присвойте начальное значение
# напишите ваш код здесь
for movies in movies_table:
if movies[2] > 1990:
after_ninety_count += 1
print(after_ninety_count)
Задание №3
Посчитайте среднее значение рейтинга драм. Для этого вычислите сумму рейтингов всех драм и разделите её на количество драм. Результат выведите на экран.
movies_table = [
['Побег из Шоушенка', 'США', 1994, 'драма', 142, 9.111],
['Крёстный отец', 'США', 1972, 'драма, криминал', 175, 8.730],
['Тёмный рыцарь', 'США', 2008, 'фантастика, боевик, триллер', 152, 8.499],
['Список Шиндлера', 'США', 1993, 'драма', 195, 8.818],
['Властелин колец: Возвращение Короля', 'Новая Зеландия', 2003, 'фэнтези, приключения, драма', 201, 8.625],
['Криминальное чтиво', 'США', 1994, 'триллер, комедия, криминал', 154, 8.619],
['Хороший, плохой, злой', 'Италия', 1966, 'вестерн', 178, 8.521],
['Бойцовский клуб', 'США', 1999, 'триллер, драма, криминал', 139, 8.644],
['Харакири', 'Япония', 1962, 'драма, боевик, история', 133, 8.106],
['Сталкер', 'СССР', 1979, 'фантастика, драма, детектив', 163, 8.083],
['Иди и смотри', 'СССР', 1985, 'драма, военный', 136, 8.094]
]
drama_rating_total = 0 # переменная для суммарного рейтинга драм
drama_rating_count = 0 # переменная для количества драм
# напишите ваш код здесь
for drama in movies_table:
if 'драма' in drama[3]:
drama_rating_count += 1
drama_rating_total += drama[5]
# здесь разделите суммарный рейтинг на количество и выведите результат на экран
print(drama_rating_total/drama_rating_count)
6.9 Заключение
В этой теме вы поработали с условным оператором. Условный оператор if входит в конструкцию if..elif..else. С помощью конструкции с условным оператором можно создать несколько веток кода, которые Python выполнит или пропустит. Теперь вы знаете, что: Алгоритм может предполагать разные пути, почти как в сказке: «Направо пойдёшь — коня потеряешь, прямо пойдёшь...» Чтобы создать несколько веток кода, нужно использовать логическое выражение и условный оператор. Ветвление бывает разной сложности: условный оператор с одной ветвью (if); условный оператор с двумя ветвями (if...else); условный оператор с несколькими ветвями (if...elif или if...elif...else). Чтобы ничего не забыть, скачайте шпаргалку темы.
6.10 Проверочные задания. Условный оператор
Проверочные задания.
Условный оператор. Цикл while Чтобы пройти тест нужно правильно ответить на 5 вопросов из 9. Время на прохождение: 10 минут
Задание 1 из 10 Какие предложения можно назвать логическими высказываниями? Выберите несколько вариантов.
Правильный ответ Адам Левин является солистом группы Maroon 5.
Правильный ответ Фильм «Сыщик» вышел в 1972 году.
Попробуйте задать вопрос: «Может ли это предложение быть истинным или ложным?». Про высказывания с просьбой, приказом или вопросом так сказать нельзя, поэтому их не считают логическими. Третье и четвёртое высказывания логическими назвать можно. И неважно, что фильм «Сыщик» вышел в 1979 году — предложение всё равно останется логическим высказыванием.
Задание 2 из 10 Данные какого типа возвращают логические выражения?
Правильный ответ bool
Логические выражения возвращают True или False. Это булевы значения, их тип — bool.
Задание 3 из 10 Выберите логические операторы, которые используют в Python.
Правильный ответ and
Правильный ответ not
Комбинировать условия в коде полезно. Так можно фильтровать данные или уточнять алгоритм. Для таких инструкций используют логические операторы. В Python их три: and, or и not. Операторы and и or объединят логические выражения, а оператор not поменяет значение выражения на противоположное. Правила, по которым действуют операторы, лучше запомнить.
Задание 4 из 10 В какой части условной конструкции указывают логическое выражение — условие?
Правильный ответ В заголовке условной конструкции
Условные конструкции состоят из разных веток кода, и в них легко запутаться. Поэтому правильный синтаксис так важен. В условных конструкциях две части: заголовок и тело. В заголовке указывают условие, а в теле — инструкции, которые выполняются в зависимости от условия.
Задание 5 из 10 Как называют такую форму условной конструкции? price = 999 if price >= 1000: print('Дорого! :(') else: print('Норм цена! :)')
Правильный ответ Полной
Условную конструкцию с веткой else называют полной. Такая конструкция охватывает все случаи: если условие из первой ветки не выполняется, в дело вступает ветка с else.
Задание 6 из 10 Как называют такую форму условной конструкции? passengers_amount = 10 if passengers_amount > 8: print('Перегрузка лифта!')
Правильный ответ Неполной
В этой конструкции нет ветви на случай, если логическое выражение вернёт False. Такие конструкции называют неполными. Они тоже полезны: если пассажиров больше 8, нужно сообщить о перегрузке лифта. Если их меньше, то ничего выводить не нужно.
Задание 7 из 10 Сколько ветвей может включать условная конструкция?
Правильный ответ Любое количество
Количество ветвей в конструкции не ограничено. С помощью ключевого слова elif можно добавить сколько угодно дополнительных условий. Главное — не переборщить, иначе в коде будет не разобраться. Например, так станет сложнее проследить, что условия не перекрывают друг друга.
Задание 8 из 10 Во вложенном списке указаны названия треков и их продолжительность. Какой код отберёт треки длиннее 210 секунд и сложит их продолжительность? tracks = [ ['Love Planet', 270], ['Dove', 291], ['Seen Change', 55], ['Home', 195] ]
Правильный ответ
tracks_length_count = 0
for track in tracks: if track[1] > 210: tracks_length_count += track[1]
Отобрать нужные значения поможет конструкция с условным оператором if. А для сложения используйте уже знакомую переменную-счётчик. Не забудьте, что такую переменную объявляют до запуска цикла. Иначе счётчик будет перезаписываться на каждой итерации.
Задание 9 из 10 Теперь добавили новый столбец с жанром. Какой код отберёт поп-треки длиннее 210 секунд и сложит их продолжительность? tracks = [ ['Donna', 'pop', 242], ['Dove', 'indie', 291], ['Pleasure To Meet You', 'pop', 255], ['Home', 'jazz', 195] ]
Правильный ответ
pop_tracks_length_count = 0
for track in tracks: if track[1] == 'pop' and track[2] > 210: pop_tracks_length_count += track[2]
С помощью условных операторов можно фильтровать данные по нескольким параметрам сразу. Например, отобрать треки и по длительности, и по жанру одновременно. Для такой задачи нужен оператор and, тогда оба условия будут соблюдены.
Вернуться в Начало статьи
7.1 Введение
7.2 Функции и высокая кухня
7.3 Собственные функции
7.4 Неповторимый код
7.5 В поисках смысла
7.6 Параметры: значения по умолчанию
Задача 1
Напишите функцию filter_by_year с двумя параметрами: data: список списков с данными о фильме; year: целое число, по умолчанию — 1990. Функция возвращает данные о фильмах, которые вышли после года year.
# функция печати таблицы, принимает на вход список списков, ничего не возвращает (неявно возвращается None)
def print_movie_table(data):
for movie in data:
for elem in movie:
print(f'{elem:<45}', end='')
print()
# определите функцию filter_by_year здесь
def filter_by_year(data, year=1990):
data = []
for movies in movies_table:
if movies[2] > year:
data.append(movies)
return data
# название, страна, год, жанр, продолжительность (мин.