Всем привет! Добро пожаловать назад.

После предварительной работы, которую я сделал, чтобы подготовиться к моему иммерсивному классу по науке о данных, программа наконец-то запустилась. Первая неделя была посвящена в основном основам - закреплению материала из предварительной работы, которую я немного обсудил в своем предыдущем сообщении в блоге (интерактивная ссылка). Мы прошли через работу с терминалом (на 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']

Используя понимание списка, мы создаем список названий фильмов, просматривая словарь фильмов и проверяя, находится ли фильм в категории ввода (аргумент). Затем функция возвращает список фильмов из определенной категории.

На сегодня все! Надеюсь, вам понравился этот пост и вы кое-что узнали. Я хотел бы услышать ваши комментарии, заметки, вопросы и предложения по темам. Увидимся в следующий раз!