Скопировать кодPYTHONmonday_steps = 12000
tuesday_steps = 9000
wednesday_steps = 10000
thursday_steps = 2500
friday_steps = 14000
saturday_steps = 8903
sunday_steps = 9000
Скопировать кодPYTHONweek_steps = [12000, 9000, 10000, 2500, 14000, 8903, 9000]
Скопировать кодPYTHON# Последовательность типа list (список);
# значения элементов списка - числа типа float.
movie_ratings = [4.7, 5.0, 4.3, 3.8]
# Последовательность типа list (список);
# значения элементов списка - строки (str)
movies = ['Матрица', 'Хакеры', 'Трон']
# Последовательность типа cтрока (str);
# элементы этой последовательности - символы, составляющие строку
name_movie = 'Джонни Мнемоник'
# Последовательности могут иметь элементы разных типов
# Например, одновременно элемент типа str и float
movie_info = ['Трон', 4.7]
# Элементами последовательности могут быть другие последовательности
movies_info = [['Трон', 4.7], ['Хакеры', 5.0], ['Матрица', 4.5]]
# Чтобы получить значение определённого элемента,
# его индекс следует указать в квадратных скобках после имени последовательности.
print(movie_ratings[2])
# Вывод в терминал: 4.3
print(name_movie[0])
# Вывод в терминал: Д
# При попытке обратиться несуществующему элементу интерпретатор вернет ошибку:
print(movies[10])
# Вывод в терминал: IndexError: list index out of range
Скопировать кодPYTHONД о м и к
name_movie = 'Джонни Мнемоник'
print(name_movie[0])
print(name_movie[2])
print(name_movie[10])
print(name_movie[5])
print(name_movie[-1])
True
или False
.Скопировать кодPYTHONprint([1, 2, 3] < [1, 2, 4])
# Вывод в терминал: True
print()
— истинно. В обеих последовательностях элементы с индексами 0 и 1
равны, а элемент с индексом 2 в первой последовательности меньше
соответствующего элемента во второй последовательности. Сравнение этих
элементов и определило результат сравнения списков. A
= 65;a
= 97;А
= 1040;а
= 1072;А
«больше», чем a
в латинице (хотя если взять оба символа из латиницы, то выражение 'A' < 'a'
вернёт True
).Скопировать кодPYTHONprint('Слон' < 'слон')
# Вывод в терминал: True
# Элемент с индексом 0 первой строки - это буквенный символ в верхнем регистре,
# его числовой код меньше той же буквы в нижнем регистре
print('1b' > 'fb')
# Вывод в терминал: False
# Элемент с индексом 0 первой строки - цифра. Её числовой код меньше, чем у букв.
Скопировать кодPYTHONprint('a' < 'ADC')
# Вывод в терминал: False
print([1, 2, 4] > [1, 2, 3, 4])
# Вывод в терминал: True
ord()
:Скопировать кодPYTHONprint(ord('Ф'))
# Вывод в терминал: 1060
< , >, <=, >=
поддерживаются только при сравнении последовательностей одного типа и однотипных элементов в этих последовательностях.[10, 'one'] > ['one', 10]
?<
или >
допустимо при условии, что объекты имеют соответствующие методы
сравнения. А в предложенных списках элементы с одинаковыми индексами
имеют разный тип.<
или >
допустимо при условии, что объекты имеют соответствующие методы
сравнения. А в предложенных списках элементы с одинаковыми индексами
имеют разный тип.Скопировать кодPYTHONfirst = [15, 2, '11', 10]
second = [15, 2, '101', 17]
print(first < second)
first[2]
и second[2]
— строки, а строки сравниваются по элементам. Элемент с индексом 1 в строке first[2]
больше элемента с индексом 1 в строке second[2]
. Значит, список first
больше списка second
.first[2]
и second[2]
— строки, а строки сравниваются по элементам. Элемент с индексом 1 в строке first[2]
больше элемента с индексом 1 в строке second[2]
. Значит, список first
больше списка second
.min()
и max()
.Скопировать кодPYTHONmy_string = '12345'
print(max(my_string))
# Вывод в терминал: 5
my_list = ['abc', 'Abc']
print(min(my_list))
# Вывод в терминал: Abc
min()
и max()
применяются операторы >
и <
, поэтому ограничение на сравнение элементов разных типов действуют и для них.Скопировать кодPYTHONmy_list = ['123', '456', 789]
print(max(my_list))
# Вывод в терминал:
# TypeError: '>' not supported between instances of 'int' and 'str'
# Нельзя сравнивать числа со строками (даже если строки притворяются числами).
+
. Объединять возможно только последовательности одного типа.Скопировать кодPYTHONfirst_baggage_list = ['Диван', 'Чемодан', 'Саквояж', 'Картина']
second_baggage_list= ['Корзина', 'Картонка', 'Маленькая собачонка']
full_baggage_list = first_baggage_list + second_baggage_list
print(full_baggage_list)
# Вывод в терминал:
# ['Диван', 'Чемодан', 'Саквояж', 'Картина', 'Корзина', 'Картонка', 'Маленькая собачонка']
Скопировать кодPYTHONpump = 'насос' * 4
print(pump)
# Вывод в терминал: насоснасоснасоснасос
small_baggage_list = ['Корзина', 'Картонка', 'Маленькая собачонка']
double_baggage_list = small_baggage_list * 2
print(double_baggage_list)
# Вывод в терминал:
['Корзина', 'Картонка', 'Маленькая собачонка', 'Корзина', 'Картонка', 'Маленькая собачонка']
len()
.Скопировать кодPYTHONmovies = ['Матрица', 'Хакеры', 'Трон', 'Тихушники', 'Сеть']
print(len(movies))
# Вывод в терминал: 5
4
: movies[4] == 'Сеть'
, ведь отсчёт индексов начинается с нуля. in
, он возвращает True
или False
.Скопировать кодPYTHONmovie_ratings = [4.7, 5.0, 4.3, 3.1]
print(4.7 in movie_ratings)
# Вывод в терминал: True
name_movie = 'Джонни Мнемоник'
print('ж' in name_movie)
# Вывод в терминал: True
in
можно проверить и отсутствие элемента в последовательности:Скопировать кодPYTHONfull_baggage_list = ['Диван', 'Чемодан', 'Саквояж', 'Картина', 'Корзина', 'Картонка']
# Если собачонки нет
if 'Маленькая собачонка' not in full_baggage_list:
# ...устраиваем скандал:
print('— Товарищи! Где собачонка?')
sequence
получить срез, в который войдут элементы, расположенные один за другим, применяют синтаксис sequence[start:end]
, где start
и end
— индексы элементов, определяющие диапазон, из которого будет взят срез.Скопировать кодPYTHONname_movie = 'Джонни Мнемоник'
print(name_movie[2:10]) # В терминал будут выведены символы со 2 по 9
# Вывод в терминал: онни Мне
2 ≤ index < 10
: элемент с индексом 10 не будет включен в срез.В ситуациях, когда конечный индекс указывается явно — элемент с этим индексом не включается в срез.
Скопировать кодPYTHONname_movie = 'Джонни Мнемоник'
# Взять срез с седьмого элемента и до конца последовательности
print(name_movie[7:])
# Вывод в терминал: Мнемоник
name_movie = 'Джонни Мнемоник'
# Взять срез от начала последовательности до шестого элемента (не включая шестой)
print(name_movie[:6])
# Вывод в терминал: Джонни
sequence[start:end:step]
Скопировать кодPYTHONmovies = ['Матрица', 'Хакеры', 'Трон', 'Тихушники', 'Сеть']
print(movies[0:5:2])
# Вывод в терминал: ['Матрица', 'Трон', 'Сеть']
Скопировать кодPYTHONmovies = ['Матрица', 'Хакеры', 'Трон', 'Тихушники', 'Сеть']
# Шаг должен иметь отрицательное зачение
print(movies[5:0:-1])
# Вывод в терминал: ['Сеть', 'Тихушники', 'Трон', 'Хакеры']
# Можно не указывать границы, а задать только отрицательное значение шага
print(movies[::-1])
# Вывод в терминал: ['Сеть', 'Тихушники', 'Трон', 'Хакеры', 'Матрица']
# Инвертирован весь список
a
, b
и c
, используя срезы с двумя и тремя параметрами. Словосочетание должно начинаться с маленькой буквы.a = 'Роботы стали важны'
b = 'в период'
c = 'эмиграции c Терры'
print(a[4:7]+b[2:7:2]+c[3:6]+c[1]*2+a[11]+a[7]+a[4])
Скопировать кодPYTHONrating1 = 4.7
rating2 = 5.0
rating3 = 4.3
rating4 = 3.1
# Дальше - код обработчика
...
Скопировать кодPYTHONmovie_ratings = [4.7, 5.0, 4.3, 3.1]
if movie_ratings[0] > 4.7:
# Код обработчика.
...
if movie_ratings[1] > 4.7:
# Код обработчика, такой же, как и для предыдущего элемента.
...
# И так далее.
# Тоска.
for
и while
.while
:Включить фильм «Матрица»
фильма до тех пор пока не закончится установленное количество разрешённых просмотров:Скопировать кодPYTHONnum_allowed_views = 5
while num_allowed_views != 0: # Пока количество разрешенных просмотров не равно 0
print('Включить фильм "Матрица"') # В терминал будет выводиться эта фраза
# После каждого вывода число разрешённых показов уменьшаем на единицу
num_allowed_views -= 1
num_allowed_views
будет уменьшаться на единицу, и при каждой следующей итерации вновь и
вновь будет проверяться условие: «а не достигла ли эта переменная
нуля?». Как только num_allowed_views
станет равной 0 — цикл завершит работу.num_allowed_views
, цикл будет выполняться бесконечно: переменная никогда не станет равной нулю, условие всегда будет истинно. while
поможет решить и задачу с перебором списка, в котором переданы рейтинги нескольких фильмов:Скопировать кодPYTHONmovie_ratings = [4.7, 5.0, 4.3, 3.1]
# Вне цикла объявляем переменную-счётчик
i = 0
while i < len(movie_ratings):
# Вместо индекса элемента подставляем переменную-счётчик
if movie_ratings[i] > 4.7:
# Код обработчика.
...
# После выполнения кода
# увеличиваем счётчик на единицу
i += 1
# И цикл выполнит следующую итерацию,
# если условие, указанное после while, истинно.
i
раз один и тот же код, особенно если значение i
неизвестно!__iter__
. Получить список встроенных методов объекта можно с помощью функции dir()
. Она вернёт все имена атрибутов и методов объекта.Скопировать кодPYTHONrecommended_movies = [
'Хатико', '23', 'Достучаться до небес', 'Хакеры', 'Трон', '1408'
]
print(dir(recommended_movies))
# Вывод в терминал:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__',
'__iter__',
'__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
for
.
В нём не надо объявлять счётчик (он спрятан «под капотом» и создаётся
автоматически), а вместо проверяемого условия при объявлении цикла for
указывают Скопировать кодPYTHONmovie_ratings = [4.7, 5.0, 4.3, 3.1]
# Переменная rating поочерёдно принимает элементы
# последовательности movie_ratings
for rating in movie_ratings:
# Теперь переменную rating можно обработать в теле цикла
if rating > 4.7:
print('Фильм крут')
...
symbol
и выполнит инструкцию, указанную в теле цикла: напечатает в терминале
две строки. Затем перейдёт к следующему элементу последовательности — и
повторит всю операцию.name_movie = 'Матрица'
for symbol in name_movie:
print((symbol + ' | ') * 7)
print('—— ' * 7)
recommended_movies
хранится список рекомендуемых фильмов, а в hackers_movies
— список «Топ-12 фильмов о кодерах и хакерах». Рекомендуем программистам посмотреть фильм "<название_фильма>"
recommended_movies = ['Хатико', '23', 'Достучаться до небес',
'Хакеры', 'Трон', '1408']
hackers_movies = ['Трон', 'Военные игры', 'Тихушники',
'Джонни Мнемоник', 'Хакеры', 'Нирвана',
'23', 'Враг государства', 'Взлом',
'Пароль рыба-меч', 'Сеть', 'Кто я']
for i in recommended_movies:
if i in hackers_movies:
print('Рекомендуем программистам посмотреть фильм «'+i+'»')
range()
. Границы диапазона передаются в аргументах:Скопировать кодPYTHONrng = range(1, 10) # Создали последовательность чисел от 1 до 9
print(type(rng))
# Вывод в терминал: <class 'range'>
range(1, 10)
.range(15)
вернёт последовательность целых чисел от 0 до 14 включительно;range(3, 15)
вернёт последовательность целых чисел от 3 до 14 включительно;range(3, 15, 2)
вернёт последовательность целых чисел от 3 до 14 с шагом 2: 3, 5, 7, 9, 11, 13
range(15, 3, -2)
:
границы диапазона инвертированы (первая больше второй), а шаг —
отрицательный; такой диапазон создаст инвертированную последовательность
от 15 до 4 с шагом 2: 15, 13, 11, 9, 7, 5
.range(1, 10, 2)
в переменную и напечатаем её:Скопировать кодPYTHONrng = range(1, 10, 2)
print(rng)
# Вывод в терминал: range(1, 10, 2)
# А где числа-то?
Скопировать кодPYTHONrng = range(1, 10, 2)
print(rng[3])
# Вывод в терминал: 7
for num in range(1, 11):
print('Это строка #', num)
print('Готово')
range()
: обработаем в цикле for
диапазон и получим элементы с одинаковыми индексами из разных списков:Скопировать кодPYTHONmovies = ['Матрица', 'Хакеры', 'Трон', 'Тихушники', 'Сеть']
movie_ratings = [4.7, 5.0, 4.3, 4.9, 3.4]
# В качестве верхней границы диапазона
# передаётся длина списка movies.
print('Рейтинг пользователей')
for index in range(len(movies)):
print(movies[index]+':', movie_ratings[index])
Здравствуйте, Александр!
Уточните, пожалуйста, вы пытаетесь совершить первую оплату?
Александр, первую оплату вы совершаете самостоятельно. После оплаты первого платёжа привязывается карта, с которой автоматически спишутся следующие, раз в 30 дней. Мы сможем помочь списать только следующие оплаты, если будут возникать трудности.
Если нужна помощь, пишите — во всём разберёмся вместе :)
Александр, выбранный вами курс стартует 16 августа, вероятнее всего, срок оплаты будет продлён до 15 августа :)
Дайте знать, если можем ещё чем-либо помочь:)
Александр, вероятнее всего, срок оплаты будет продлём до 15 августа, если до этого времени не будет набран поток :)
Не переживайте, если вы оплатите на следующей неделе, вы будете зачислены в поток :)
Александр, если вы оплатите курс на следующей неделе, ты вы попадете в ближайший поток :)
Так и есть, но место для вас найдётся :) Остались ли у вас ещё какие-то вопросы ?
Добрый день, Александр!
Для оплаты обучения, перейдите в свой профиль: https://praktikum.yandex.ru, выберите профессию, которую планируете изучать, далее нажмите на кнопку вверху «Купить полную программу», выберите подходящий вам способ оплаты и следуйте инструкциям системы.
Если возникнут вопросы — обязательно пишите :)
Подскажите, вы оплачиваете курс картой банка РФ или иностранного банка?
Уточните,
пожалуйста, почту из вашего аккаунта в Практикум, выбранный курс и
способ оплаты (ежемесячными платежами или полностью) — пришлём ссылку
для оплаты и запишем в группу.
При оплате ежемесячными платежами мы будем формировать новую ссылку каждый месяц и присылать также в письме.
Если вы не против, уточните, пожалуйста, страну вашего проживания — стараемся расширять географию оплаты на сайте и хотим понимать, куда двигаться :)
Александр, отправили вам ссылку в отдельном письме. После оплаты придёт кассовый чек, это значит, что всё прошло успешно и мы получили деньги. После оплаты мы включим вас в 5 поток, который стартует 16 августа.
Cумма ежемесячного платежа составит 12 825руб с учетом скидки 5% за подписку Яндекс.Плюс, мы будем присылать вам ссылку на оплату ежемесячно, всего их будет 14, как и месяцев в курсе Python-разработчик Плюс. Оплата по ссылке проводится в российских рублях.
В день старта потока вам придет важное письмо на почту и куратор примет вас на борт.
Удачи в учебе! А если будут вопросы - пишите, мы рядом.
Сейчас мы пришлем вам новую ссылку с учетом промокода SECOND :)
Александр, первую ссылку мы деактивировали, стоимость обучения для вас составит 11475руб в месяц вместо 13500руб с учетом скидки 15% (5% за Плюс + 10% по промокоду SECOND). Всего будет, как писали ранее, 14 ссылок, и итоговая стоимость курса для вас составит 160 650руб вместо обычных 189 000руб :)
Здравствуйте, Александр!
Наш специалист напишет вам утром и вы во всём разберётесь, хорошо ?:)
Грустить осталось недолго :)
Александр, наши коллеги работают по будням с 10 до 19 :)
Ожидайте, пожалуйста 🌿
Александр, добрый день,
Оплата по ссылке прошла успешно. В течение дня статус оплаты в личном кабинете поменяется:)
Мы записали вас в 5 поток, который стартует 16 августа. В личном кабинете у вас не должно быть ошибки об оплате, проверьте, пожалуйста:)
Обязательно пишите, если у вас появятся вопросы до старта:)
Здравствуйте, Александр!
Пришлите, пожалуйста, ссылку на ваш код, записанный на сайте https://pastebin.com/ и ссылку на саму задачу — посмотрим, в чём там дело :)
Подождём :) Что-то не так ?
Такое бывает :) Если понадобится наша помощь — напишите, мы тут как тут.
Давайте обратимся к теории задания :) Вот код, который можно там найти
return render(request, 'homepage/homepage.html', context)
Нашли свою ошибку ?
С синтаксисом нужно быть осторожным; то, что вы написали, по факту не совсем правильно :) В прекоде есть такая строчка
Как вернуть из view-функции функцию render? Вот так: `return render(аргументы-аргументы-аргументы)
А вы записали
аргументы-аргументы-аргументы=аргументы
Остались ли у вас ещё какие-то вопросы ?
Рады были помочь :)
Здравствуйте, Александр! Обновите, пожалуйста, сейчас страницу курса. Всё должно встать на свои места.
А
так, уже заканчиваем последние приготовления. В течение дня по
московскому времени откроется доступ к платной части, сперва мы
познакомимся, а в Slack куратор подробнее расскажет про то, что будет
дальше. Приглашение в Slack направим на почту — иногда оно попадает в
папки Спам или Рассылки, советуем поглядывать и туда.
Уточните, пожалуйста, вы указывали новую почту для приглашения в slack или ту же, что используете на другом курсе?
Там сейчас у вас только каналы для профессии Python-разработчик , а других каналов, которые были нет, правильно понимаем?
Хорошо, спасибо! Уточним вопрос у коллег и вернёмся к вам с ответом :)
С вами свяжется куратор и добавит в нужные каналы.
Дайте знать, если ещё чем-то можем вам помочь :)
Сейчас куратор напишет в новом аккаунте :)
Здравствуйте!
Также, просим проверить, что в личном кабинете Яндекс Паспорта https://passport.yandex.ru/ привязана карта, с которой необходимо совершить оплату.
Если карта не привязана, просим привязать её и сообщить нам 4 последние цифры карты.
Отправили запрос на списание, если всё пройдёт успешно, то в течение 10-15 минут денежные средства спишутся, вам на почту придёт чек о списании и статус в профиле изменится. Дайте знать, если этого не произойдёт.
Здравствуйте!
Александр, уточните, пожалуйста, ваш логин в Практикуме — alexander.borovtsoff@yandex.by? Не могли бы также уточнить, когда вы в последний раз оплачивали курс Аналитик данных?
Александр, уточните, пожалуйста, последние 4 цифры вашей карточки, привязана ли она к вашему аккаунту? Также, пожалуйста, убедитесь, что у вас на карте достаточно средств для проведения платежа — оплатить необходимо 13000 рублей.
Александр, провели платёж — уточните, пожалуйста, списались ли средства теперь? :)