Freecodecamp: 未来的Python课程[讨论]

创建于 2017-04-25  ·  56评论  ·  资料来源: freeCodeCamp/freeCodeCamp

Python课程

这个问题将成为规划和开发未来的FCC Python课程的主线。

有关集成REPL.it课堂的任何讨论,请访问https://github.com/freeCodeCamp/freeCodeCamp/issues/14736

我们目前正在努力在iframe Repl.it小部件上运行可验证的Python测试套件。 一旦使它起作用,我们将开始实施此线程中定义的布局课程。 如果您有兴趣开发FCC Python课程的这一部分,请在Gitter上给我自己(Ethan Arrowood)发消息或在下面发表评论。

请注意在3.6版中编写所有Python挑战



FCC Python课程的当前结构为:初学者部分,中级部分和特殊主题部分。

入门部分:

  • [] Python简介
  • []输出

    • 打印

    • 转义字符

    • 输入

  • []数据类型

    • 整数,浮点数

    • 弦乐

    • 元组

    • 清单

    • 套装

    • 辞典

  • []运算符

    • +,-、、 /,%,*

    • <,>,<=,> =,==,!=

    • =

    • 对,错与非

    • 在,不在

    • 是,不是

  • [x]数学-@bgroveben

    • 加,减,乘,除

    • 功率,sqrt(),abs(),round(),sum(),max(),min()

  • []变量
  • []有条件

    • 如果,否则

  • []循环

    • 同时,对于(在范围内),对于(在列表中),对于(在字符串中)

  • [ ] 职能
  • []类

中级科:

  • []文件I / O
  • []迭代器和生成器
  • [x] Lambda-@robbiemu
  • []有条件
  • []面向对象
  • []模块,库,包
  • []文件和错误处理
  • []高级对象和数据类型
  • []打印格式
  • []列表推导
  • []装饰

专题部分:

  • []机器学习
  • []游戏开发
  • []网络抓取(BeautifulSoup)
  • [] GIS(传单/专栏)
  • [] Flask / Django(最好只关注一个而不是两者)
  • []数据分析(熊猫/脾气暴躁)
  • []数据可视化(布鲁克)
  • [] GUI(tkinter)
  • []地理编码(地理)
  • []自然语言工具包(NLTK)

有节课的想法吗?

请在下面发表评论,并指定应添加到哪个部分以及原因。

是否要开发课程课程?

在以下详细信息下方进行评论:

  • 标题
  • 说明/说明/课程
  • 代码提示/挑战
  • 预定义代码
  • 测验

是否要更改现有课程?

为您的更新提供详细的解释,说明为什么要进行给定的更改。



快来了

--

如何提出Python挑战

https://github.com/freeCodeCamp/freeCodeCamp/tree/feature/python-challenges

提出Python挑战?

learn

最有用的评论

大家好,我是Repl.it的创始人/首席执行官。 FCC亲切而亲切,所以我们将尽我们所能,在这里提供支持。 为此,采用Repl.it教室的主要障碍是什么?

所有56条评论

我们可以添加以下内容:
初学者

  • 有条件的

中间:

  • 迭代器和发电机
  • 拉姆达
  • 有条件的
  • 面向对象
  • 模块,库,包
  • 文件和错误处理
  • 高级对象和数据类型
  • 打印格式

高级:

  • 网页抓取(BeautifulSoup)
  • GIS(传单/影集)
  • Flask / Django(我更倾向于Django)
  • 数据分析(熊猫/脾气暴躁)
  • 数据可视化(布鲁克)
  • GUI(tkinter)
  • 地理编码(地理)

@mstellaluna谢谢您的建议。 初学者条件部分和中级条件部分之间有什么区别?

对我来说,@ Ethan-Arrowood的基本知识应该只是掌握最少的知识(如果是,则是针对哪个)。 我在中间输入的“条件”将是基于用户输入或三元语句的条件。打印格式设置的基本要求是基本的简单打印语句,而中间我们可以引入带有变量%s的打印语句。等

Repl.it具有用于创建自定义教室的新区域。 您可以使用说明创建作业。

代表教室
https://repl.it/site/classrooms

社区教室清单
https://repl.it/community

我建议添加基本,中级和高级算法部分(类似于FCC前端课程针对JavaScript的内容)。

我已经看了给出的FCC-Python-Variable-Challenge示例,并且注意到该挑战需要一些“先决条件”知识。 好像露营者以前被引入过变量一样。

变量质询的描述/说明没有解释什么是变量。 与JavaScript的“声明JavaScript变量”挑战不同,本书对变量是什么做了一些介绍。

我知道这只是一个例子-但可以肯定的是-我们是否要假设露营者在构建Python课程时已经学习过JavaScript课程?

@jamesperrin是的,我们对此进行了调查,但是我们试图将用户保留在FCC的网站上,因此必须解决挑战。 此外,我们无法访问Repl教室的单元测试结果。

@ 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社区中也很活跃,因此在需要时我可以吸引很多有见识的人。

我的第一个建议:

  • []使所有示例遵循PEP 8
  • []布尔值课程应与“真实”和“虚假”值一起放在“数据类型”中
  • []一些标准库应包含在某处( itertoolscollections
  • []可能包括一些基本库( requestsscrapy等)
  • []我不确定'转义序列'在'输出'中是什么意思,但是如果它引用%s样式字符串....则将其保留为您可能会遇到的'旧东西',但不要确实需要担心”部分,只教新样式f.format()样式字符串。
  • []循环部分提到rangelist和'string'就像它们都是不同的一样,但是在Python中它们都是可迭代的,这就是为什么您可以使用相同的对象对其进行循环关键字。 也许可以在“迭代器和生成器”部分中进行说明。

    • [] enumerate()

  • []上下文管理器应在某处提及。
  • []可能有一个asyncio的高级部分
  • []传统上, PEP 20一开始是在某个地方教授的,还有一些spameggs示例。
  • []个测试
  • [] virtualenvs
  • []安装
  • [ ] 评论
    我将竭尽所能为这个项目提供帮助。 我已经思考了很长时间,我们需要这样的东西。

@cldershem有很多很棒的建议,谢谢! 根据您的经验,您可以做出的最好的贡献就是自己编写课程/挑战。 让我知道您对写作感兴趣的😄

@cldershem

我不确定100%如何开始捐款,但我绝对愿意。

https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Pull-Request-Contribute

可能会指出正确的方向。

也许@ Ethan-Arrowood也会通过Github的评论来提交意见?

@ t3h2mas是的,正如我在最高级课程/挑战中所说的那样,可以在此线程上以注释的形式提交s

@cldershem您可以提供另一种帮助的方法是,如果您知道创建可以实际测试(使用unittest)的浏览器内挑战的好方法。 我们正在探索从REPL.it到codeMirror到Skulpt的各种选项。

@cldershem我可能应该写“转义字符”。 这些是“ \ n”,“ \ t”等。

而且我知道它们是可迭代的,但是我开始按照个别课程来分门别类。

顺便说一句,感谢所有的建议和所有的帮助。 我计划在周末进行示例课程/挑战练习,希望它可以成为其他人的模板。 如果您要处理的课程/挑战与“免费代码营”挑战的工作原理相似,请发布您的代码。 我很乐意看到这一点。

@ Ethan-Arrowood @ginoskotheon @cldershem
我还想帮助编写FCC-Python课程的课程和挑战。
从前面的评论中可以看出,Repl.it教室并不是最佳选择,但是我可以在那里开始上课(标题,说明,测试等)。 一旦确定了平台/框架,我便可以随时修改并移动代码。
我写了一些示例练习,您可以在这里找到; 您应该能够看到它们,但是您必须登录才能导入它们,深入了解并修改它们。
请随时发表评论,评论和更改课程本身,并在确定了更合适的平台/框架后通知我。
同时,我可以进行上面详细介绍的“初学者”课程,从数学开始,继续进行其他需要完成的工作。

大家好,我是Repl.it的创始人/首席执行官。 FCC亲切而亲切,所以我们将尽我们所能,在这里提供支持。 为此,采用Repl.it教室的主要障碍是什么?

@amasad你好! 很高兴有你在这里😄
在FCC Python课程中采用Repl.it所面临的主要障碍是与Repl.it课堂单元测试的接口。 我们喜欢Repl.it课堂结构,它能够运行带有单元测试的独立文件; 但是,我们无法弄清楚如何判断用户何时完成挑战(通过所有单元测试)。 当然,这种行为是嵌入在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循环遍历字典或数组。 这使我无时无刻不在。

_标题_ Lambdas简介

_说明/说明/课程_
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://zh.wikipedia.org/wiki/匿名函数

“匿名函数(函数文字,lambda抽象)是未绑定到标识符的函数定义。” [5]“ Lambda来自Lambda演算”一词[4]。 在python中,lambda是用于定义匿名函数的关键字。 使用lambda关键字而不是def关键字,基本的lambda看起来像这样: 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 GUI界面中,必须将函数传递给_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_

这种用法的另一个关键特征是,它也使代码也更短,这意味着程序员在寻求工具作为大型解决方案的一部分时,更容易使用它。

_代码提示/挑战_
编写具有上述关键功能的lambda表达式; 通过将所有使用的代码移到同一位置,使代码更易读; 从而产生更短,更自然的代码。

_预定义代码_

# 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,一旦我们知道更多信息,将更新此线程。 现在做得好😄

这是此线程开头列出的Beginner-Math部分的代码挑战之一。

_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。 干得好!

@ Ethan-Arrowood谢谢! 我还为上面列出的其他基本/数学挑战写了课。 如果您愿意,我可以在此主题中发布它们。 另外,我认为将round(),sum(),max()和min()包括在数学基础课程中是一个好主意-它们将派上用场。

@bgroveben我将其标记为已完成,是的。 也请在单独的评论中进行每个挑战; 更改或其他内容参考起来会更容易。 感谢您的贡献!

@ Ethan-Arrowood

@amasad你好! 很高兴有你在这里😄

很高兴来到这里💃

在FCC Python课程中采用Repl.it所面临的主要障碍是与Repl.it课堂单元测试的接口。 我们喜欢Repl.it课堂结构,它能够运行带有单元测试的独立文件; 但是,我们无法弄清楚如何判断用户何时完成挑战(通过所有单元测试)。 当然,这种行为是嵌入在Repl.it中的,但是为了保持当前FreeCodeCamp的感觉,我们希望能够在完成任务后自动将用户推进到下一个挑战(或提示他们这样做)。当前的挑战(即成功通过所有单元测试)。

关于我们如何实现这一点的任何想法? FCC是用JavaScript编写的,因此任何类型的Web api或npm模块都可以正常工作。

最简单的方法是将其烘焙。在老师那边设置“自动前进”之类的设置。 (我们不反对添加webhooks等,而是为了降低复杂性)是否可行?

@amasad使用“自动前进”功能,我们当然可以在Repl.it教室中模拟FreeCodeCamp,但是我们仍然无法跟踪FCC端的用户进度,这对于FCC的感觉至关重要。

允许我们获取/发布“教室”数据的功能怎么样? 这样,我们可以做类似的事情:

repl.getUser('classroomID', 'userID').then( () => {
    // do stuff async 
}).catch( (error) => {
    // handle error
});

更好:

repl.getProgress('classroomID', 'lessonID', 'userID').then( () => { }).catch( (e) => { });

现在,这两种方法都将在我们端运行,但是由于REPL课堂是通过iframe嵌入的,因此我们至少需要REPL方面的一些简单事件触发器,以便正确跟踪各个用户的进度。

此外,由于Classroom将通过iframe嵌入,因此我们有可能获得一项功能,当用户完成一堂课时,REPL Classroom运行一些JavaScript行(可以通过Teachers门户进行定义),以便我们可以将教室与FCC交流?

我们希望能够将REPL课堂不仅用于Python,还可以用于其他语言。 一旦FCC Python课程成功启动并运行,我们将继续实现Java或C ++之类的语言(或者实际上是REPL可以提供给我们使用的任何语言!)。

我希望得到@QuincyLarson以及其他FCC主要贡献者的意见(我将尝试在Gitter / Forums上与他们联系)。

大家好,非常感谢您的评论和建议。

@amasad感谢您抽出宝贵的时间在这里分享您的想法。 很高兴知道REPL.it正在开发教室产品,我们希望将其集成到平台中。

对于初学者来说,如果我们可以在单独的讨论中代替课程大纲来进行讨论,以使其与集成本身更加相关,那就太好了。

@ Ethan-Arrowood出色的工作。 感谢您的辛勤工作。

@amasad @QuincyLarson我已将REPL课堂讨论正式移至该问题线程(根据@raisedadead建议)。 https://github.com/freeCodeCamp/freeCodeCamp/issues/14736

跟进cldershem的评论(8天前评论),以下是collections -

标题

元组

说明/说明/课程

1 https://zh.wikipedia.org/wiki/元组
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中,这些功能与字典相似,字典中的键是预先定义的。 Namedtuple可以用于提供任何用途的快速属性树:例如,如果您的应用程序必须处理袜子,并且所有袜子都具有大小和价格,那么具有两个字段的元组就很有用,近似于字典{size: _size_, price: _price_} 。 要获得具有这些字段的元组,请将字段传递给collections.namedtuple工厂函数:[2]
collections.namedtuple(Socks, ['size', 'price'])
为方便起见,尤其是在处理来自纯文本源的信息时,字段名称可以是数组,也可以是单个字符串,其逗号分隔和/或空格分隔的值:[3]
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
除以下划线开头的名称外,任何有效的Python标识符均可用于_fieldname_。 有效标识符由字母,数字和下划线组成,但不能以数字或下划线开头,并且不能是诸如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)

_from_ [3]

代码提示/挑战

namedtuple的一个好用法是促进数据的摄取,例如从数据库的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

一种名为__make_的NamedTuples方法有助于在迭代器函数中生成实例,这会使上一课中的问题更加简洁。
用法如下:

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',))
  • 基本用例的覆盖范围:数据提取(如csv),数据库事务,网络事务,促进POJO(或.. POPO在Python中是一件事情吗?

以下是其余的初学者数学挑战:

__标题:__ Python添加

__描述/说明/课程:__

在Python中,整数(int)是3种不同的数字类型之一。
在本练习中,您将使用加号(+)运算符将两个整数相加。

>>> 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的变量,以变量a和b的顺序调用divmod函数。

__预定义代码:__

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))

__标题:__ Python指数

__描述/说明/课程:__

Python使用双星号(**)运算符处理幂运算。
星号之前的数字是基数,而后面的数字是指数。
Python还允许您使用内置函数pow(x,y),该函数将x赋予y的幂。

>>> 2 ** 2
4
>>> pow(2, 4)
16

__代码提示/挑战:__

在控制台中,为您提供了两个变量a和b。
使用本课中描述的任何一种方法,定义一个名为power的变量,该变量等于a等于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)

__标题:__ Python浮点运算师

__描述/说明/课程:__

Python 3区分整数(底数)除法和浮点(真)除法。
Python使用单个正斜杠(/)运算符进行浮点除法。
使用浮点除法时,即使商(结果)是一个像1或2这样的整数,也将返回浮点数而不是整数。

>>> 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)

__标题:__ 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)

__标题:__ Python最大值

__描述/说明/课程:__

函数max()返回可迭代项(如列表或字符串)中最大的项,或两个或多个参数中的最大项。
在给出iterable作为参数时,我们必须确保iterable中的所有元素都属于同一类型。
如果iterable为空且未提供默认值,则会引发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)

__标题:__ Python最小值

__描述/说明/课程:__

min()函数返回可迭代项(如列表或字符串)中的最小项,或两个或多个参数中的最小项。
在给出iterable作为参数时,我们必须确保iterable中的所有元素都属于同一类型。
如果iterable为空且未提供默认值,则会引发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')

__标题:__ 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)

__标题:__ Python剩余部分

__描述/说明/课程:__

%(取模)运算符从第一个参数除以第二个参数得出余数。
模运算符始终会产生与第二个操作数具有相同符号的结果(或为零)。

>>> 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)

__标题:__ Python舍入

__描述/说明/课程:__

函数round(number,n-digits)返回一个给定的数字,四舍五入到小数点后的n位精度。
如果省略n位数字或为None,则将最接近的整数返回到其输入。
如果使用一个参数调用,则返回值为整数,否则返回与给定数字相同的类型。

>>> round(5)
5
>>> round(5.5)
6
>>> round(5.555, 1)
5.6

__代码提示/挑战:__

变量long_pi小数点后的位数过多。
创建一个名为shorter_pi的变量,我们可以改用它。
使用round()函数仅显示小数点后的前2位数字,并将该值分配给short_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)

__标题:__ Python平方根

__描述/说明/课程:__

math.sqrt()函数是Python math模块的一部分,该模块始终可用,但必须导入。
Math.sqrt(x)返回x的平方根作为浮点数。

>>> import math
>>> math.sqrt(4)
2.0
>>> math.sqrt(2)
1.4142135623730951

__代码提示/挑战:__

变量square_root定义为数字81。
更改square_root,使其等于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)

__标题:__ Python减法

__描述/说明/课程:__

在Python中,整数(int)是3种不同的数字类型之一。
在本练习中,您将使用减号(-)减去两个整数。

>>> 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(iterable)从左到右将Python可迭代的所有项(列表,元组等)相加并返回总数。
有一个可选的第二个参数start,默认为0,并添加到总数中。
Iterable的项目通常是数字,并且起始值不允许为字符串。

>>> 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课堂:
https://repl.it/community/classrooms/18388。

请注意-我们正在将关于Python编码挑战的讨论移至这个新的存储库: https :

在这里发布以供参考:
我认为最大和最小可能都希望:

  1. 为了清楚起见使用数字-用户可能不知道char如何是整数
  2. 确保使用一个数字的多个实例-真正推动行为
此页面是否有帮助?
0 / 5 - 0 等级