Всем привет! Добро пожаловать назад.
После предварительной работы, которую я сделал, чтобы подготовиться к моему иммерсивному классу по науке о данных, программа наконец-то запустилась. Первая неделя была посвящена в основном основам - закреплению материала из предварительной работы, которую я немного обсудил в своем предыдущем сообщении в блоге (интерактивная ссылка). Мы прошли через работу с терминалом (на Mac он немного отличается в Windows), работу с git и GitHub, а также с основами Python - самой основой класса. Практически все, что мы делаем, делается с использованием Python, поэтому я подумал, что в этом посте сосредоточусь на базовом Python.
Согласно Википедии, Python - это широко используемый язык программирования высокого уровня для программирования общего назначения, созданный Гвидо ван Россумом и впервые выпущенный в 1991 году. […] Python имеет философию дизайна, которая подчеркивает удобочитаемость кода […] и синтаксис, который позволяет программистам выражать концепции меньшим количеством строк по сравнению с другими языками . Основная идея здесь в том, что синтаксис Python относительно прост и более или менее имеет смысл, когда вы его читаете, даже если вы не компьютер :)
Если вы сделали это здесь после прочтения первого сообщения, я предполагаю, что вы немного знаете о Python и о том, как с ним работать. Что я хочу сделать, так это просмотреть два домашних задания, которые я получил за первую неделю, и то, как я их решил. Итак, у нас есть список словарей, и нам нужно было писать / кодировать функции, чтобы делать определенные вещи. Во второй версии задания нам пришлось решить те же проблемы, но на этот раз с использованием списков.
Это список словарей:
# Dictionary of movies movies = [ { "name": "Usual Suspects", "imdb": 7.0, "category": "Thriller" }, { "name": "Hitman", "imdb": 6.3, "category": "Action" }, { "name": "Dark Knight", "imdb": 9.0, "category": "Adventure" }, { "name": "The Help", "imdb": 8.0, "category": "Drama" }, { "name": "The Choice", "imdb": 6.2, "category": "Romance" }, { "name": "Colonia", "imdb": 7.4, "category": "Romance" }, { "name": "Love", "imdb": 6.0, "category": "Romance" }, { "name": "Bride Wars", "imdb": 5.4, "category": "Romance" }, { "name": "AlphaJet", "imdb": 3.2, "category": "War" }, { "name": "Ringing Crime", "imdb": 4.0, "category": "Crime" }, { "name": "Joking muck", "imdb": 7.2, "category": "Comedy" }, { "name": "What is the name", "imdb": 9.2, "category": "Suspense" }, { "name": "Detective", "imdb": 7.0, "category": "Suspense" }, { "name": "Exam", "imdb": 4.2, "category": "Thriller" }, { "name": "We Two", "imdb": 7.2, "category": "Romance" } ]
Первый вопрос заключался в том, чтобы написать функцию, которая берет один фильм и возвращает True, если его оценка IMDB выше 5,5. Первую функцию я написал:
def single_score(movie): for m in movies: if m["name"] == movie and m["imdb"] > 5.5: imdb_score = True elif m["name"] == movie and m["imdb"] < 5.5: imdb_score = "Sorry, score less than 5.5" return imdb_score
Функция single_score принимает один аргумент (фильм) и выполняет итерацию по элементам (словарям) в списке «фильмы» (обозначается как m), если имя в словаре совпадает с аргументом («фильм») и оценка imdb в словаре выше 5,5, функция возвращает переменную с именем «imdb_score», которой присвоено значение «True». Если imdb ниже 5.5, переменной «imdb score» присваивается строка «Извините, оценка меньше 5.5».
Способ понимания списка:
def higher_score(movie_name): return ['True' for movie in movies if movie["name"] == movie_name and movie["imdb"] > 5.5]
Второй вопрос заключался в том, чтобы написать функцию, которая возвращает подсписок фильмов с рейтингом IMDB выше 5,5. Первую функцию я написал:
def movies_above(movies): movies_above = [] for m in movies: if m["imdb"] > 5.5: movies_above.append(m["name"]) return movies_above movies_above(movies)
Функция movie_above принимает один аргумент - movies (который на самом деле является списком), который в первую очередь создает пустой список. После этого он перебирает каждый элемент (каждый словарь) в фильмах и проверяет, превышает ли рейтинг IMDB 5,5. Если это так, функция добавляет (добавляет) название фильма с таким счетом в список «movies_above». Затем функция возвращает movies_above. Список, который я получил:
[‘Usual Suspects’, ‘Hitman’, ‘Dark Knight’, ‘The Help’, ‘The Choice’, ‘Colonia’, ‘Love’, ‘Joking muck’, ‘What is the name’, ‘Detective’, ‘We Two’]
И в понимании списка:
def MoviesGreaterList(movies): movies_greater = [movie["name"] for movie in movies if movie["imdb"] > 5.5] return movies_greater
Функция принимает один аргумент, фильмы (список). Следующая строка добавляет название фильма в список, если его оценка больше 5,5. В конце концов верните список фильмов. Список, который я получил:
['Usual Suspects', 'Hitman', 'Dark Knight', 'The Help', 'The Choice', 'Colonia', 'Love', 'Joking muck', 'What is the name', 'Detective', 'We Two']
Как видите, это тот же список!
Третий вопрос заключался в том, чтобы написать функцию, которая берет список фильмов и вычисляет средний балл IMDB.
def movies_average_score(movies_list): movies_scores = [] for movie in movies_list: score = movie["imdb"] movies_scores.append(score) average_score = sum(movies_scores) / len(movies_scores) return average_score total_movies_average = movies_average_score(movies) print(average) 6.48666666667
Функция movies_average_score принимает единственный аргумент - список фильмов и создает пустой список movies_scores. Затем функция выполняет итерацию по каждому фильму (словарю) в списке, присваивает рейтинг IMDB переменной score и добавляет счет в список movies_scores. Затем он вычисляет средний балл, суммируя баллы в списке и деля его по длине списка. Функция возвращает переменную average_score.
В понимании списка:
def AvgScore(movies): scores = [movie["imdb"] for movie in movies] return (sum(scores)/len(scores)) AvgScore(movies) 6.48666666667
Функция принимает один аргумент - список фильмов. Он добавляет оценку IMDB для каждого фильма в списке фильмов. Затем функция возвращает среднее значение путем деления суммы списка оценок на длину списка. Как можете, такая же средняя, конечно.
Четвертый и последний вопрос заключался в том, чтобы написать функцию, которая принимает имя категории и возвращает только те фильмы из этой категории. 1-я функция:
def movies_category(category): movies_category = [] for m in movies: if m["category"] == category: movies_category.append(m["name"]) return movies_category romance_movies = movies_category("Romance") print romance_movies ['The Choice', 'Colonia', 'Love', 'Bride Wars', 'We Two']
Функция movies_category принимает один аргумент - категорию. Он создает пустой список (movies_category), а затем перебирает каждый элемент (m) в фильмах. Если фильм принадлежит к категории, которую мы помещаем в функцию (категорию), это имя фильма добавляется (или добавляется) в список movies_category. Затем функция возвращает этот список.
Та же функция с пониманием списка:
def CategoryList(category): category_list = [movie["name"] for movie in movies if movie["category"] == category] return category_list CategoryList("Romance") ['The Choice', 'Colonia', 'Love', 'Bride Wars', 'We Two']
Используя понимание списка, мы создаем список названий фильмов, просматривая словарь фильмов и проверяя, находится ли фильм в категории ввода (аргумент). Затем функция возвращает список фильмов из определенной категории.
На сегодня все! Надеюсь, вам понравился этот пост и вы кое-что узнали. Я хотел бы услышать ваши комментарии, заметки, вопросы и предложения по темам. Увидимся в следующий раз!