Для любого обсуждения интеграции REPL.it Classroom, пожалуйста, посетите https://github.com/freeCodeCamp/freeCodeCamp/issues/14736.
В настоящее время мы работаем над запуском проверяемого набора тестов Python для виджета iframe Repl.it. Как только мы получим это работать, мы начнем реализовывать изложенный учебный план, определенный в этом потоке. Если вы заинтересованы в разработке этой части учебной программы FCC по Python, напишите мне (Итану Эрровуду) в Gitter или оставьте комментарий ниже.
Прокомментируйте ниже и укажите, в какой раздел он должен быть добавлен и почему.
Прокомментируйте ниже следующие детали:
Предоставьте свои обновления подробным объяснениям, почему вы вносите данные изменения.
https://github.com/freeCodeCamp/freeCodeCamp/tree/feature/python-challenges
Предлагаете задачу Python?
Вот что мы можем добавить:
Новичок
Средний:
Продвинутый:
@mstellaluna Спасибо за ваши рекомендации. В чем будет разница между условным разделом для начинающих и условным разделом среднего уровня?
@ Ethan-Arrowood для меня основы должны быть просто минимальными знаниями (если, иначе, для чего). Моя запись для "условного" в промежуточном будет состоять из условных операторов, основанных на вводе пользователем или тернарных операторах .. то же самое для форматирования печати ... базовым будет простой оператор печати, тогда как промежуточный мы можем ввести операторы печати с переменными,% s. . и т.д
Repl.it имеет новую область для создания пользовательских классов. Вы можете создавать задания с инструкциями.
Repl.it Классы
https://repl.it/site/classrooms
Список классов сообщества
https://repl.it/community
Я предлагаю добавить разделы базового, среднего и продвинутого алгоритмов (аналогично тому, что есть в учебной программе FCC Front End для JavaScript).
Я посмотрел на приведенный пример FCC-Python-Variable-Challenge и заметил, что задача требует некоторого знания «предварительных требований». Как будто кемпер раньше был знаком с переменными.
Описание / объяснение для запроса переменных не объясняет, что такое переменные. В отличие от задачи JavaScript
Я знаю, что это всего лишь пример - но на всякий случай - будем ли мы предполагать, что турист уже прошел курс обучения JavaScript при создании учебного плана Python?
@jamesperrin: Да, мы
@ U-Way Да, это была моя ошибка. Цель состоит в том, чтобы это был независимый учебный план, поэтому фактические объяснения будут намного более подробными (как версия JS). Спасибо, что выделили это :)
@AnikaErceg, это будут отличные практические разделы. Обязательно буду иметь это в виду. Спасибо!
@ Ethan-Arrowood Возможно, вы захотите включить набор инструментов для естественного языка.
Я добавил понимание списка в промежуточный
Как насчет декораторов под продвинутыми? Я предполагаю, что контекстные менеджеры появятся во время обработки файлов?
@ t3h2mas Я ставлю декораторы под промежуточные.
Если вы добавили for (in list)
, возможно, вы также могли бы добавить for (in string)
?
Кроме того, было бы неплохо познакомиться с оператором in
(я знаю, что мне стало легче, когда я обнаружил, что его не нужно использовать только с циклами for
: smiley:).
@AnikaErceg хорошее предложение. Готово. Я добавил, что есть и нет.
@ginoskotheon Вы забыли добавить for (in string)
под петли или не видите смысла вводить это? : смайлик:
Я разработчик, первым языком которого был Python ... Я уже помогал с местным отделением FCC, и организатор предложил мне помочь с новой учебной программой. Я не уверен на 100%, как начать вносить свой вклад, но я определенно хотел бы это сделать. Я также довольно активен в сообществе Python, как локально, так и в целом, поэтому я могу получить много знающих глаз, когда это необходимо.
Мои первые предложения:
itertools
, collections
)requests
, scrapy
и т. д.)%s
.... оставьте это для «устаревшего материала, с которым вы можете столкнуться, но не действительно нужно побеспокоиться о разделе и просто научить новому стилю f
и .format()
style строкам.range
, list
и 'строка', как будто они все разные, но в Python все они повторяются, поэтому вы можете перебирать их одним и тем же ключевые слова. Возможно, это можно будет затронуть в разделе «Итераторы и генераторы».enumerate()
asyncio
spam
и eggs
.@cldershem Так много замечательных предложений, спасибо! С вашим опытом лучший вклад, который вы можете внести, - это написание самих уроков / задач. Дайте мне знать, какие из них вам было бы интересно написать 😄
@cldershem
Я не уверен на 100%, как начать вносить свой вклад, но я определенно хотел бы это сделать.
https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Pull-Request-Contribute
Может указать вам правильное направление.
Может быть, @ Ethan-Arrowood также будет принимать материалы через комментарии Github?
@ t3h2mas Да, как я уже сказал в самом главном отправить задание на урок / задание можно прямо здесь, в этой ветке, в качестве комментариев 😄
@cldershem Другой способ, которым вы можете помочь, - это если вы знаете хороший способ создать задачу в браузере, которую действительно можно протестировать (с помощью unittest). Мы изучаем всевозможные варианты от REPL.it до codeMirror to Skulpt.
@cldershem Мне, наверное, следует написать "escape-символы". Это такие вещи, как '\ n', '\ t' и т. Д.
И я знаю, что они повторяемы, но я начинаю разбивать вещи на отдельные уроки для укуса.
Кстати, спасибо за все предложения и всю помощь. Я планирую поработать над образцом урока / задания на выходных, и, надеюсь, он может стать своего рода шаблоном для других. Если вы хотите разобраться в уроке / вызове, который функционирует аналогично тому, как работают задачи Free Code Camp, опубликуйте свой код. Я бы хотел это увидеть.
@ Итан-Эрровуд @ginoskotheon @cldershem
Я также хотел бы помочь написать уроки и задачи для курса FCC-Python.
Из предыдущих комментариев я вижу, что Repl.it Classrooms - не лучший выбор, но я могу начать работу над уроками (название, описание, тесты и т. Д., Описанные выше) там. После того, как платформа / фреймворк выбраны, я всегда могу изменить код и переместить его.
Я написал несколько примеров упражнений, которые вы можете найти здесь ; вы должны иметь возможность их видеть, но вы должны войти в систему, чтобы импортировать их, заглянуть под капот и изменить их.
Пожалуйста, не стесняйтесь комментировать, критиковать и изменять сами уроки, а также сообщите мне, когда будет выбрана более подходящая платформа / фреймворк.
А пока я могу работать над уроками для начинающих, описанными выше, начиная с математики и переходя ко всему, что еще нужно сделать.
Привет, ребята, я основатель / генеральный директор Repl.it. FCC близок и дорог нашим сердцам, поэтому мы сделаем все, что в наших силах, чтобы поддержать здесь. Каковы основные препятствия на пути внедрения учебных заведений Repl.it для этого?
@amasad привет! Рад видеть тебя здесь 😄
Основное препятствие, с которым мы сталкиваемся при внедрении Repl.it в курс FCC Python, - это взаимодействие с модульными тестами Repl.it Classroom. Нам нравится структура Repl.it Classroom, позволяющая запускать независимый файл с модульными тестами; однако мы не можем понять, как узнать, когда пользователь завершает задачу (проходит все модульные тесты). Конечно, это поведение встроено в Repl.it, но для того, чтобы сохранить ощущение текущего FreeCodeCamp, мы хотели бы иметь возможность автоматически продвигать пользователя к следующему испытанию (или предлагать ему это сделать) после того, как он завершит текущая задача (т.е. успешно пройти все модульные тесты).
Есть идеи, как это реализовать? FCC написан на JavaScript, поэтому любой модуль web api или npm будет работать очень хорошо.
Если вы думаете, что многие из ваших зрителей будут иметь опыт работы с JavaScript, я думаю, что было бы полезно ознакомиться с различиями. Например
// javascript
var dict = {
a : 1
};
console.log(dict.a)
# python
dict = {
"a" : 1
}
print(dict["a"])
Другой пример - цикл по словарю или массиву с помощью циклов for. Это все время сбивает меня с толку.
_Title_ Введение в лямбды
_Описание / Объяснение / Урок_
srcs:
1 http://stackoverflow.com/questions/890128/why-are-python-lambdas-useful
2 http://www.secnetix.de/olli/Python/lambda_functions.hawk
3 https://pythonconquerstheuniverse.wordpress.com/2011/08/29/lambda_tutorial/
4 http://stackoverflow.com/questions/16501/what-is-a-lambda-function
5 https://en.wikipedia.org/wiki/Anonymous_function
«Анонимная функция (функциональный литерал, лямбда-абстракция) - это определение функции, не привязанное к идентификатору». [5] Слово «лямбда происходит от лямбда-исчисления» [4]. В python лямбда - это ключевое слово для определения анонимной функции. Используя ключевое слово lambda
вместо ключевого слова def
, базовая лямбда выглядит следующим образом: lambda x: x**2
Их можно назначать переменным и повторно использовать во многом аналогично функциям:
>>> def f (x): return x**2
>>> print f(8)
64
>>> g = lambda x: x**2
>>> print g(8)
64
_src 2_
Наиболее распространенные варианты использования - сделать код коротким и читаемым вместо разделения определения и использования, как в этом примере:
def __init__(self, parent):
"""Constructor"""
frame = tk.Frame(parent)
frame.pack()
btn22 = tk.Button(frame,
text="22", command=self.buttonCmd22)
btn22.pack(side=tk.LEFT)
btn44 = tk.Button(frame,
text="44", command=self.buttonCmd44)
btn44.pack(side=tk.LEFT)
def buttonCmd22(self):
self.printNum(22)
def buttonCmd44(self):
self.printNum(44)
_src 3_
В этом графическом интерфейсе Tkinter функция должна быть передана атрибуту _command_. Функции названы числами, потому что они были созданы с помощью построителя RAD. Это нормально и функционально, но не очень разборчиво. Вы можете переименовать их, и это проясняет ситуацию, но если бы у вас было много кнопок, было бы неудобно искать нужную команду по коду, а поскольку они просто возвращают базовое значение, лучшим решением было бы определить тут же работают анонимно:
frame = tk.Frame(parent)
frame.pack()
btn22 = tk.Button(frame,
text="22", command=lambda: self.printNum(22))
btn22.pack(side=tk.LEFT)
btn44 = tk.Button(frame,
text="44", command=lambda: self.printNum(44))
btn44.pack(side=tk.LEFT)
_src 3_
Еще одна ключевая особенность такого использования заключается в том, что он также делает код короче, что означает, что он более доступен для программиста, когда он ищет инструмент как часть более крупного решения.
_Подсказка кода / вызов_
Напишите лямбда-выражение с ключевыми характеристиками, описанными выше; сделать код более разборчивым, переместив весь используемый код в одно и то же место; в результате получается более короткий и естественный код.
_Предопределенный код_
# only edit below this line
def y(z):
return abs(5-z)
print(sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=y))
_src 1_
_Решение_
print(sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)))
@robbiemu отличная работа! Мое единственное предложение - добавить комментарий в разделе «Предварительно определенный код» рядом со строкой печати, который говорит что-то вроде # only edit this line
. Также я считаю, что это код Python 2, и мы собираемся обучать Python 3, поэтому я думаю, что единственное изменение - это строка печати, требующая обертывания '()'.
Спасибо Вам за Ваш вклад!
Итан, спасибо. Я продолжу над этим работать. Проблема и решение могут быть изменены, поэтому есть разумные тесты (без использования статического набора данных, как у меня здесь). Я хотел бы увидеть пример урока, как лучше всего это сделать.
@robbiemu конечно. Мы все еще работаем над REPL.it и обновим эту ветку, как только узнаем больше информации. Отличная работа
Это одна из проблем с кодом для раздела «Начинающий - математика», перечисленного в начале этой цепочки.
_Title_ - Абсолютное значение
_Описание / Объяснение / Урок_ -
Абсолютное значение указывает, насколько число отличается от нуля.
Если число отрицательное, функция abs () преобразует его в положительное.
В abs (x) x может быть целым числом, числом с плавающей запятой или комплексным числом.
https://docs.python.org/3/library/functions.html#abs
https://docs.python.org/3/library/stdtypes.html#numeric -types-int-float-complex
>>> abs(2)
2
>>> abs(-2)
2
>>> abs(-2.0)
2.0
_Подсказка кода / вызов_ -
Переменная absolute_value равна -42.
Измените absolute_value так, чтобы оно равнялось абсолютному значению -42.
_Предопределенный код_ -
absolute_value = -42
_Решение_ --
absolute_value = abs(-42)
_Тесты_ -
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(absolute_value, int)
self.assertEqual(absolute_value, 42)
@bgroveben LGTM. хорошая работа!
@ Итан-Эрровуд Спасибо! Я также написал уроки для других базовых / математических задач, перечисленных выше. Я могу разместить каждого из них в этой теме, если хотите. Кроме того, я думаю, что было бы неплохо включить round (), sum (), max () и min () в уроки по основам математики - они пригодятся.
@bgroveben Я
@ Итан-Эрровуд
@amasad привет! Рад видеть тебя здесь 😄
Рад быть здесь 💃
Основное препятствие, с которым мы сталкиваемся при внедрении Repl.it в курс FCC Python, - это взаимодействие с модульными тестами Repl.it Classroom. Нам нравится структура Repl.it Classroom, позволяющая запускать независимый файл с модульными тестами; однако мы не можем понять, как узнать, когда пользователь завершает задачу (проходит все модульные тесты). Конечно, это поведение встроено в Repl.it, но для того, чтобы сохранить ощущение текущего FreeCodeCamp, мы хотели бы иметь возможность автоматически продвигать пользователя к следующему испытанию (или предлагать ему это сделать) после того, как он завершит текущая задача (т.е. успешно пройти все модульные тесты).
Есть идеи, как это реализовать? FCC написан на JavaScript, поэтому любой модуль web api или npm будет работать очень хорошо.
Самый простой - это запечь это. Сделайте настройку на стороне учителя, которая говорит «автопродвижение» или что-то в этом роде. (Мы не против добавления веб-перехватчиков и т. Д., Но для уменьшения сложности) Это сработает?
@amasad, используя функцию «автоматического продвижения», мы, несомненно, сможем эмулировать FreeCodeCamp в классе Repl.it, но мы все равно не сможем отслеживать прогресс пользователя на стороне FCC, что очень важно для ощущения FCC.
Как насчет функции, которая позволяет нам ПОЛУЧАТЬ / ОТПРАВИТЬ данные «Классной комнаты». Таким образом мы могли бы сделать что-то вроде:
repl.getUser('classroomID', 'userID').then( () => {
// do stuff async
}).catch( (error) => {
// handle error
});
или еще лучше:
repl.getProgress('classroomID', 'lessonID', 'userID').then( () => { }).catch( (e) => { });
Теперь оба этих метода будут работать на нашей стороне, но поскольку REPL Classroom встроен через iframe, нам понадобятся, по крайней мере, несколько простых триггеров событий со стороны REPL, чтобы правильно отслеживать прогресс отдельного пользователя.
Кроме того, поскольку класс будет встроен через iframe, мы могли бы потенциально получить функцию, которая, когда пользователь завершает урок, REPL Classroom запускает некоторые строки JavaScript (которые мы можем определить через портал для учителей), чтобы мы могли заставить класс общаться с FCC?
Мы надеемся, что сможем использовать классы REPL не только для Python, но и для других языков. Как только учебный план FCC Python будет запущен и успешно запущен, мы перейдем к реализации таких языков, как Java или C ++ (или буквально любого языка, который REPL может предложить нам для использования!).
Я хотел бы узнать мнение @QuincyLarson по этому
Всем привет, большое спасибо за комментарии и предложения.
@amasad Спасибо, что
Для начала было бы здорово, если бы мы могли обсудить это в отдельном обсуждении, а не в этой ветке учебного плана, чтобы сделать его более актуальным для самой интеграции.
@ Ethan-Arrowood Отличная работа с инициативой. Спасибо за ваш тяжелый труд.
@amasad @QuincyLarson Я официально перенес обсуждение в классе REPL в эту ветку проблемы (согласно рекомендации https://github.com/freeCodeCamp/freeCodeCamp/issues/14736
вслед за комментарием cldershem (прокомментирован 8 дней назад), вот один для collections
-
именованные пары
1 https://en.wikipedia.org/wiki/Tuple
2 https://docs.python.org/3.6/library/collections.html
3 https://docs.python.org/3.6/library/collections.html#collections. namedtuple
4 https://pythonprogramming.net/reading-csv-files-python-3/
Кортеж - это понятие, распространенное в математике. Он считается конечным упорядоченным списком элементов. [1] В python они функционально похожи на словари, где ключи определены заранее. Именованные кортежи можно использовать для быстрого создания дерева свойств для любого использования: например, если ваше приложение должно иметь дело с носками, и все носки имеют размер и цену, тогда полезен кортеж с двумя полями, приближающий словарь {size: _size_, price: _price_}
. Чтобы получить кортеж с этими полями, вы передаете их в фабричную функцию collections.namedtuple
: [2]
collections.namedtuple(Socks, ['size', 'price'])
Для удобства, особенно при обработке информации из текстовых источников, имена полей могут быть массивом или отдельной строкой со значениями, разделенными запятыми и / или пробелами: [3]
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
Для _fieldname_ может использоваться любой действительный идентификатор Python, за исключением имен, начинающихся с символа подчеркивания. Допустимые идентификаторы состоят из букв, цифр и знаков подчеркивания, но не начинаются с цифры или подчеркивания и не могут быть такими ключевыми словами, как class, for, return, global, pass или raise. [3]
После создания их можно использовать для создания экземпляров со словарными записями:
Point = namedtuple('Point', ['x', 'y'])
p = Point(x=11, y=22)
p[0] + p[1] # 33
x, y = p # (11, 22)
p.x + p.y # 33
p # Point(x=11, y=22)
_из_ [3]
Хорошее использование namedtuples - это облегчение приема данных, например, при экспорте в CSV из базы данных. В следующем коде исправьте этот импорт CSV с помощью кортежа.
import csv
import collections
# only change code below this line!
recordData = ['fieldNames'] # find the fieldnames in the code below
# only change code above this line!
EmployeeRecord = collections.namedtuple('EmployeeRecord', recordData)
with open('employee-records.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
# onlt change code below this line!
name = row[0]
age = row[1]
title = row[2]
department = row[3]
paygrade = row[4]
processEmployee([name, age, title, department, paygrade]) # fails because processEmployee accepts an EmployeeRecord Tuple!
# only change code above this line!
_производится из_ [4]
_note_: в приведенном выше примере используется реальный файл, но мы можем заменить строки with ... readCSV
чем-то вроде:
readCSV = csv.reader(['Alan,42,Manager,Sales, N1', 'Beth,38,Regional Director,Operations,CO','Robin,23,Associate,Sales,C2']
import csv
import collections
# only change code below this line!
recordData = ['name', 'age', 'title', 'department', 'paygrade']
# only change code above this line!
EmployeeRecord = collections.namedtuple('EmployeeRecord', recordData)
with open('employee-records.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
# onlt change code below this line!
employee = EmployeeRecord(*row)
processEmployee(employee)
# only change code above this line!
Урок 2:
namedtuples._make
1 https://docs.python.org/3.6/library/collections.html#collections. namedtuple
Метод NamedTuples с именем __make_ облегчает создание экземпляров в функции итератора, что сделало бы проблему из предыдущего урока еще более краткой.
Это используется как:
for emp in map(EmployeeRecord._make, allRows):
print(emp.name, emp.title)
Мы пересматриваем предыдущий урок и исправляем код. Это почти готово, но работа еще не закончена. Для вашего удобства некоторые записи распечатаны там, где вы должны обрабатывать запись. Помните, что нам нужно создать EmployeeRecord и передать его функции в другом месте кода, например:
employee = EmployeeRecord(*row)
processEmployee(employee)
import csv
from collections import namedtuple
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
for emp in map(EmployeeRecord._make, csv.reader(open("employees.csv", "rb"))):
# only change code below this line!
print(emp.name, emp.title)
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
import csv
for emp in map(EmployeeRecord._make, csv.reader(open("employees.csv", "rb"))):
# only change code below this line!
processEmployee(emp)
Возможно, мы могли бы также использовать быстрые уроки, иллюстрирующие:
n = NamedTuple(**Dictionary)
._fields
для создания альтернативных форм: TwoD = namedtuple('TwoD', 'x y')
=> ThreeD = namedtuple('ThreeD', TWo._fields + ('z',))
Вот остальные задачи по математике для начинающих:
__Title: __ Дополнение Python
__ Описание / Пояснение / Урок: __
В Python целое число (int) - это один из трех различных числовых типов.
В этом упражнении вы добавите два целых числа с помощью оператора плюс (+).
>>> 2 + 2
4
__Подсказка / запрос кода: __
Измените 0 так, чтобы сумма была равна 20.
__Предопределенный код: __
total = 10 + 0
__Решение:__
total = 10 + 10
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(total, int)
self.assertEqual(total, 20)
__Заглавие:__
Вычислить частное и остаток с помощью функции divmod ().
__ Описание / Пояснение / Урок: __
Divmod принимает два (не комплексных) числа в качестве аргументов и возвращает пару чисел, состоящую из их частного и остатка при использовании целочисленного деления.
Для целых чисел результат такой же, как (a // b, a% b).
>>> divmod(1, 1)
(1, 0)
>>> divmod(3, 2)
(1, 1)
__Подсказка / запрос кода: __
В этом упражнении для вас определены переменные a и b.
Определите переменную с именем result, которая вызывает функцию divmod для переменных a и b (в указанном порядке).
__Предопределенный код: __
a = 11
b = 3
__Решение:__
a = 11
b = 3
result = divmod(a, b)
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(result, tuple)
self.assertEqual(result, (3, 2))
__Title: __ Python Exponents
__ Описание / Пояснение / Урок: __
Python использует оператор двойной звездочки (**) для обработки возведения в степень.
Число перед звездочкой - это основание, а число после - показатель степени.
Python также позволяет вам использовать встроенную функцию pow (x, y), которая дает вам x в степени y.
>>> 2 ** 2
4
>>> pow(2, 4)
16
__Подсказка / запрос кода: __
В консоли вам даны две переменные, a и b.
Используя любой метод, описанный в этом уроке, определите переменную с именем power, которая равна степени b.
__Предопределенный код: __
a = 3
b = 4
__Решение:__
a = 3
b = 4
power = pow(a, b)
# or #
power = a ** b
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(power, int)
self.assertEqual(power, 81)
__Title: __ Python Float Division
__ Описание / Пояснение / Урок: __
Python 3 различает целочисленное (пол) деление и деление с плавающей запятой (истинное).
Python использует один оператор косой черты (/) для деления с плавающей запятой.
При использовании деления с плавающей запятой, даже если частное (результат) представляет собой целое число, например 1 или 2, вместо int будет возвращено число с плавающей запятой.
>>> 1 / 1
1.0
>>> 3 / 2
1.5
__Подсказка / запрос кода: __
Когда вы запустите существующий код, переменная с именем quotient будет иметь значение 1.0.
Измените второе число (знаменатель) так, чтобы частное имело значение 2,5.
__Предопределенный код: __
quotient = 5 / 5
__Решение:__
quotient = 5 / 2
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(quotient, float)
self.assertEqual(quotient, 2.5)
__Title: __ Целочисленное деление Python
__ Описание / Пояснение / Урок: __
Python 3 различает целочисленное (пол) деление и деление с плавающей запятой (истинное).
Python использует оператор двойной косой черты (//) для целочисленного деления.
При использовании целочисленного деления Python округляет частное до ближайшего целого числа.
>>> 1 // 1
1
>>> 3 // 2
1
__Подсказка / запрос кода: __
Когда вы запустите существующий код, переменная с именем quotient будет иметь значение 1.
Измените второе число (знаменатель) так, чтобы частное имело значение 2.
__Предопределенный код: __
quotient = 5 // 5
__Решение:__
quotient = 5 // 2
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(quotient, int)
self.assertEqual(quotient, 2)
__Title: __ Максимальное значение Python
__ Описание / Пояснение / Урок: __
Функция max () возвращает самый большой элемент в итерируемом объекте (например, список или строку) или самый большой из двух или более аргументов.
Предоставляя итерацию в качестве аргумента, мы должны убедиться, что все элементы в итерации имеют один и тот же тип.
Если итерация пуста и значение по умолчанию не указано, возникает ошибка ValueError.
>>> max(1,2,3,4)
4
>>> list1 = ['a', 'e', 'i', 'o', 'u']
>>> max(list1)
'u'
>>> string1 = "largest"
>>> max(string1)
't'
__Подсказка / запрос кода: __
В стартовом коде есть список номеров с именами, ну, цифрами.
Самая высокая переменная инициализируется числами.
Сделайте наибольшее значение равным наибольшему числу в числах.
__Предопределенный код: __
numbers = [8, 2, 4, 3, 6, 5, 9, 1]
highest = numbers
__Решение:__
numbers = [8, 2, 4, 3, 6, 5, 9, 1]
highest = max(numbers)
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(highest, int)
self.assertEqual(highest, 9)
__Title: __ Минимальное значение Python
__ Описание / Пояснение / Урок: __
Функция min () возвращает наименьший элемент в итерируемом объекте (например, список или строку) или наименьший из двух или более аргументов.
Предоставляя итерацию в качестве аргумента, мы должны убедиться, что все элементы в итерации имеют один и тот же тип.
Если итерация пуста и значение по умолчанию не указано, возникает ошибка ValueError.
>>> min(1,2,3,4)
1
>>> list1 = ['a', 'e', 'i', 'o', 'u']
>>> min(list1)
'a'
>>> string1 = "smallest"
>>> min(string1)
'a'
__Подсказка / запрос кода: __
В стартовом коде есть список букв, названных, ну, букв.
Самая низкая переменная инициализируется буквами.
Сделайте наименьшее значение равным наименьшей (в алфавитном порядке первой) букве в буквах.
__Предопределенный код: __
letters = ['m','o','n','t','y','p','y','t','h','o','n']
lowest = letters
__Решение:__
letters = ['m','o','n','t','y','p','y','t','h','o','n']
lowest = min(letters)
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(lowest, str)
self.assertEqual(lowest, 'h')
__Title: __ Python Умножение
__ Описание / Пояснение / Урок: __
Python использует оператор звездочки (*) для умножения.
>>> 3 * 3
9
__Подсказка / запрос кода: __
Измените 0, чтобы произведение было 80.
__Предопределенный код: __
product = 8 * 0
__Решение:__
product = 8 * 10
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(product, int)
self.assertEqual(product, 80)
__Title: __ Python Remainder
__ Описание / Пояснение / Урок: __
Оператор% (по модулю) возвращает остаток от деления первого аргумента на второй.
Оператор по модулю всегда дает результат с тем же знаком, что и его второй операнд (или ноль).
>>> 3 % 2
1
>>> 3 % 2.0
1.0
Простой способ определить, является ли число четным или нечетным, - это проверить остаток при делении этого числа на 2.
Для нечетных чисел остаток равен 1.
Для четных чисел остаток равен 0.
>>> 3 % 2
1
>>> 4 % 2
0
__Подсказка / запрос кода: __
Установите остаток переменной равным остатку от деления 11 на 3, используя оператор по модулю (%).
__Предопределенный код: __
remainder = "Solution goes here"
__Решение:__
remainder = 11 % 3
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(remainder, int)
self.assertEqual(remainder, 2)
__Title: __ Округление Python
__ Описание / Пояснение / Урок: __
Функция round (число, n цифр) возвращает заданное число, округленное до точности n цифр после десятичной точки.
Если n цифр опущено или равно None, на вход возвращается ближайшее целое число.
Возвращаемое значение является целым числом, если вызывается с одним аргументом, в противном случае оно того же типа, что и заданное число.
>>> round(5)
5
>>> round(5.5)
6
>>> round(5.555, 1)
5.6
__Подсказка / запрос кода: __
В переменной long_pi слишком много цифр после десятичной точки.
Создайте переменную с именем shorter_pi, которую мы можем использовать вместо этого.
Используйте функцию round (), чтобы отобразить только первые 2 цифры после десятичной точки, и присвойте это значение shorter_pi.
__Предопределенный код: __
longer_pi = 3.14159265358979323846
__Решение:__
longer_pi = 3.14159265358979323846
shorter_pi = round(longer_pi, 2)
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(shorter_pi, float)
self.assertEqual(shorter_pi, 3.14)
__Title: __ Python Square Root
__ Описание / Пояснение / Урок: __
Функция math.sqrt () является частью математического модуля Python, который всегда доступен, но должен быть импортирован.
Math.sqrt (x) возвращает квадратный корень из x как число с плавающей запятой.
>>> import math
>>> math.sqrt(4)
2.0
>>> math.sqrt(2)
1.4142135623730951
__Подсказка / запрос кода: __
Переменная square_root определяется числом 81.
Измените квадратный_корень так, чтобы он равнялся квадратному корню из 81.
Математический модуль был импортирован для вас.
__Предопределенный код: __
import math
square_root = 81
__Решение:___
import math
square_root = math.sqrt(81)
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(square_root, float)
self.assertEqual(square_root, 9.0)
__Title: __ Python Вычитание
__ Описание / Пояснение / Урок: __
В Python целое число (int) - это один из трех различных числовых типов.
В этом упражнении вы вычтете два целых числа с помощью оператора минус (-).
>>> 2 - 1
1
__Подсказка / запрос кода: __
Измените 0 так, чтобы сумма была равна 10.
__Предопределенный код: __
total = 20 - 0
__Решение:__
total = 20 - 10
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(total, int)
self.assertEqual(total, 10)
__ Название: __ Python Sum
__ Описание / Пояснение / Урок: __
Функция sum (итерация) складывает все элементы в итерируемом Python (список, кортеж и т. Д.) Слева направо и возвращает итог.
Существует необязательный второй аргумент, start, который по умолчанию равен 0 и добавляется к итоговой сумме.
Элементы итерируемого обычно представляют собой числа, а начальное значение не может быть строкой.
>>> numbers = [1, 2, 3, 4, 5]
>>> sum(numbers)
15
>>> sum(numbers, 1)
16
>>> sum(numbers, 10)
25
__Подсказка / запрос кода: __
Есть два списка номеров.
Найдите сумму всех элементов в обоих списках и присвойте это значение переменной с именем total.
__Предопределенный код: __
list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8, 10]
__Решение:__
list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8, 10]
total = sum(list1, sum(list2))
__Тесты: __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(total, int)
self.assertEqual(total, 55)
Я думаю, это охватывает все уроки, перечисленные в разделе «Основы / математика».
Пожалуйста, дайте мне знать, если вы хотите что-то добавить.
Кроме того, не стесняйтесь вносить правки, изменения, предложения и т. Д.
У меня есть все уроки, которые я только что опубликовал в файлах .py и .md по адресу:
https://github.com/bgroveben/FCC_Python.
Я также создал REPL Classroom по адресу:
https://repl.it/community/classrooms/18388.
Обратите внимание - мы переносим обсуждение наших проблем кодирования Python в этот новый репозиторий: https://github.com/freeCodeCamp/python-coding-challenges/issues
Размещение здесь для справки:
Я думаю, что Макс и Мин могут захотеть и того, и другого:
Самый полезный комментарий
Привет, ребята, я основатель / генеральный директор Repl.it. FCC близок и дорог нашим сердцам, поэтому мы сделаем все, что в наших силах, чтобы поддержать здесь. Каковы основные препятствия на пути внедрения учебных заведений Repl.it для этого?