ROSS RHEINGANS-YOO：你好，我是罗斯。
这是一个CS50研讨会。
它会带你从编程 在C在Python编程。
>> Python是一种脚本语言。
这在很大程度上是像C 在语法，虽然有些
的技术细节 怎么说的语法被执行
略有不同。
这是比C在某些方面不那么强大。
这是不太表现为 哪儿于您的电脑
内存被摆出来， 它如何摆出来，
当它变得自由， 这些各种各样的事情。
>> 它在某些方面比C更实用， 因为它更容易的编程。
语言是，一些 人，更直观。
真的，我们的目标是为 它是更快方案
，并能降低执行。
>> 现在，如果你仔细想想 的时间量
你花你的最后 问题集写作
对你的代码 你的时间花量
在你的最后一个问题 设置执行你的代码，
你想象的语言 这是快一倍写，
和慢一倍来执行，可能会 在某些方面的改进℃。
当然，当你试图写 小程序从身边小事做起，
Python是选择的有用的语言。
>> 并在此结束 研讨会上，我希望你能
能够使 选择在今后的项目
关于哪种语言是 正确的使用，而不是想法
一个语言更 纠正所有的时间。
有关本次研讨会是有几件事情。
本次研讨会是不打算 从头开始教你的Python。
Python是非常相似 到C，和我假设
你是一个CS50的学生，或者是有人 具有类似熟悉C.
>> 如果你CS50学生 围绕问题设置6，
所以，你已经看到了很多 事情在C，我给你
的主要差别， 和一些事
这使Python不同 并特别有用的，
但我不打算去 什么是编程语言
以及如何编写程序。
但是，本次研讨会将教 你写的Python程序
如果你是那几个群体之一。
同样，我们将看看如何 你会实现psets--
这应该是1-6 Python--并提供指针
官方文件 备查。
另一件事是重要的 关于这次谈话是如何分配的，
这部影片将是 在网上，礼貌CS50的，
所以你不应该觉得像 你需要做笔记。
您可以随时回去看看 它后来作为参考。
此外，该幻灯片 可现在
在这个网站，应该 带你做一个谷歌文档。
这是一个略有删节的版本 什么我显示在屏幕上。
>> 一位细心的警告之前， 我们跳，Python 3中
从Python 2中不同的语言。
他们看起来很多相同的;有 非常轻微的技术差异
这将导致程序 用Python编写的2
不能够被执行 在Python 3的环境。
>> 该CS50设备附带 Python中，默认情况下它使用Python 2。
您可以通过检查这 输入你的命令行
蟒蛇 - 版本，这应该输出 2.7.6对当前器具。
试试Python 3中，这不 在家电正常工作，
如果Python默认会2.X.Y，无论是在 该设备或您自己的机器。
此时应更换的Python 3随时随地 在这次演讲中，我编写Python。
如果你的机器 2运行在默认情况下，类型
蟒3以便能够实际上 跟随并执行这些事。
>> 此外，我会点你 在官方资源了。
docs.python.org/3--~~V小心 那这是一个3，而不是一个2--
有一些有用的参考。
教程将带你穿越 很多相同的东西
我现在做的，除了文字形式。
参考是作为一个有用的 引用的语言，
和标准库提供 你的一些扩展
具有附加功能。
>> 所以第一个Python程序。
在左边，我们有标准的C， 在右边，我们有Python的。
你可能已经认识到 这个问题，它的
第一个问题中的一个 套在CS50，和这些
使用相同的解决方案，解决它。
现在，之所以说我们是 看着这些并排
如此，我们可以看看 语法上的不同。
其中一个房间里的大象 你可能已经注意到权
蝙蝠，Python有没有 周围的代码主要功能包装。
因此，在C，你写了一堆 文件，将它们链接在一起，
和程序开始执行 在这个东西叫做INT为主。
>> 在Python，你写一个 你的文件，执行该文件，
该计划开始执行 在该文件的顶部。
因此，这将启动 在文件的顶部
往下走，直到它找到别的东西。
如果找到一个函数的定义， 它实际上并不会执行该代码，
它会简单地定义函数。
但在这里，当第一 计划是n等于10，
的第一件事，这个方案 需要做的是利用10这个值
并设置成一个叫做变量n。
>> 说起这一行的，一 其他things-- sorry--这
意味着C程序， 你会写他们，
会让对方，这将 援引一些铛命令，
然后你就会运行 生成的可执行文件。
Python程序，运行 文字file--这mario.py可能
是这个文件，我只是表现 你 - 你会运行该文件
你会执行， 它和内容
将通过执行 Python解释器。
你可以在你的IDE做到这一点。
>> 所以，如果我有一个Hello文件， 它只是有这个内容。
这实际上是Python的 2，而不是Python 3，所以不要
担心语法了。
但我会运行Python，上 hello.py，和它运行。
>> 另一种方式，我可以使用Python的 我不会有这么多的处理在这次谈话，
是，如果我只需键入的Python，它 滴我到一个环境中，
我可以换行是Python的线。
所以在这里，如果我输入 打印空间“你好，世界”。
类型输入。
它会吐我回结果 个别立即行。
>> 这是可能是有用的。
在这次演讲中，我会做幻灯片的事情。
所以，你就可以按照 沿任一在这里，也可以通过写
实际的文件，然后执行它们。
>> 但是，要回本 代码，另一件事
你可能有 noticed--好，有
两件事情，你可能 注意这些块。
第一，而更现实的是， 在Python有没有尾随分号。
>> 分号是可选的随处可见 和无害化无处不在。
您可以添加他们。
它可能使人们谁写的 蟒蛇在你生活窃笑
在你的背后，是因为 他们是没有必要的。
他们往往是被关押在一个标志 语言从C的设计师
觉得它更清楚这样 而且它没有必要申报
每次结束一行。
>> 另一个奇怪的事情有关这款N 是它不具有连接一个类型。
一个神奇的作品Python--的 我要去把它称为魔术，
但也有极 技术原因为何
works--的所述一个 魔术件的Python
是的变量可以展开或 收缩到包含任何数据
类型，你会希望他们。
>> 所以这是一个10。
如果以后下来我分配给该 ñ0.5，则需0.5。
不管它是在这里为int， 漂浮在那里，使用该n什么
会，或多或少，能够突突 同时，如果它得到任何的那些。
除非有一些非常现实的 它之所以不能使用数据
键入使得n目前， 在这一点上，它会得到
楔形，并抛出一个错误， 而那些各种各样的事情。
>> 但在这里，巨蟒 并不真正关心什么
这就是我要在这个贴 一句话一样，你想这件事情？
这东西是什么？
是的，它是一种事情。
我会坚持到底。
这将是一个问题以后，如果 有人谁愿意使用该结束
不能处理它。
这是一个主要的 Python和C之间的差异
这使得它容易 写的非常大的C程序
并且可以更容易地写 非常小的Python程序。
>> 该语法不是很 不同之处是什么呢。
这是稍有不同 它是如何表达的。
所以这是一个非常，所谓 Python化，写它的方式。
对于行中的范围（n）的，这是 从0到n范围内的数字，
包容在底 和独特的顶部。
因此，它是从0到n-1，这是 正是C代码是干什么的，
除了它是一个更容易 看也许。
>> 有关块 没有掀起大括号，
而不是它的衬托 这个缺口。
因此，所有这些线都 四个空格转移到右侧，
或类似有关大象的宽度。
而这些都是那些具 将要在此为执行。
如果我搞砸了 压痕就这个问题和我
该打印推回 原来的压痕，
该打印将离开for循环。
相反，C，其中在这里我居然 需要移动的封闭梅开二度。
>> 这意味着你没有得到错误 即跳出你，因为你
放支架在错误的地方。
它意味着你得到错误 即跳出你，因为你
缩进行错了。
因此，它使压痕超级小心。
希望你被超 小心你的压痕，无论如何，
因此这不是 更多的负担。
>> 但对于Python中的基本规则， 我们将有一对夫妇的这些
我们将经历通过 在谈话的过程中，
就是尽量自然的语法 之前看任何东西。
所以这个语法，对于 这个数目在范围内，
非常鲜明的风格上。
很多东西在Python 我们将看到以这种形式。
>> 所以，如果你来了 用一个新的对象，你
想你应该可以 迭代此，在这种格式中，
原来它可能 支持该格式。
我们不打算在超深 技术原因，这是事实。
>> 但它是一个非常有用的直觉有 当你接近Python程序，
这个东西只是去上班。
尝试一下。
启动命令行 解释器，看看它是否工作，
事情继续前进，然后再 甚至需要打开谷歌说，
有什么语法 这个特别的事情？
大量的Python，你也可以 只是尝试探索。
>> 这如果是更相似 到C那么维权的。
请注意，没有括号。
括号是，再次， 无害的，但不必要的。
有一个冒号在端 就像for循环，
并再次，相对块是 缩进，而不是衬着括号。
这东西是原 缩进的水平，
其相关的功能块再次缩进。
这些工作，正是因为他们做的C.
>> 这实际上是大同小异。
此外，打印失去一个字符 关闭printf函数您传递一些字符串。
原来字符串 既可以划分出
用单引号或双引号。
有没有区别， 除了内部
单引号，你可以使用 双引号与放弃，
而不必 逃避所有的人。
而双引号里面，你 可以使用单引号与放弃
而不必逃避它们。
如果你想混 他们，你当然可以
看看网上如何做到这一点。
>> 你会发现，在这里， 我在年底通过=这个事情。
这是一个可选的示例 的说法，这是其中的一件事情
Python支持的 使得它非常有用。
所以打印其实有很多 参数，这通常是
设置为默认 价值，但在这里，我
决定重写一个叫做结束。
我要的原因 用一个空字符串覆盖它
在Python中的打印，由 默认情况下，打印出一个新行
你告诉它太后的事情。
>> 所以这个散列实际上是要 在新的一行打印出一个哈希值。
如果我不想哈希打印出来 之后，一个新的生产线，那么我不得不说
不打印之一。
但是，却又如此的最后一件事， 这个程序是缺少一个人是
一个包括在顶部。
打印被烤成Python所以基本上 ，有没有头部或模块
你需要 包括，但如果想
以包括其它的东西 在Python脚本，
我会做一个非常类似的format-- 话都只是略有不同。
>> 我提到我们 不需要一个主这里，
因为Python的开始 执行在顶部。
如果我想换行 这在一个功能，我
会做它像this--我 会说DEF函数名，
参数可能会去在这里，我们将 看到其中的一些后，结肠，
然后再次，这 整个掀起块
是什么操作 阻止该功能。
因此，这是定义 的功能。
还有的声明，再向下 在这里，我可以调用该函数。
再次，程序 解释器，从顶部开始，
可以看到，这是定义。
它不会执行此，直到它 到这里，然后就好像哦
现在你已经把它称为，我 想我应该执行它。
>> 一个东西，这是很常见 看到Python文件，
尤其是Python的文件 被释放到公共
并制定by--和发展， 维护，是值得的这种形式。
这是basically--是因为 Python中，您从顶部开始
然后执行下到谷底， 我如果我只是叫马里奥在这里，
那么任何时候我包括在此文件 另一个文件，因为我想用
马里奥功能，其他的文件将 也有这样的呼吁马里奥在里面。
而当我跑这个文件， 它会叫马里奥。
>> 因此，这可能是我唯一 想，如果我实际上已经运行此
执行这个特定的文件。
所以，我可以在包装这个 成语就是这样，在那里我说，
如果这个执行的名称 环境是主要的，
然后，我想要做的这些事情。
否则，别人可以 use--包括我function--
我的文件，只是为了让 访问这些功能
而不必运行的事 我想在这个文件来执行。
这是，再次，可选 但很常见的。
>> 这些东西是entirely--是 正是C和Python中的一样，
当然是在3。
我认为在2，除法运算符 有时会给你回来时，浮动
你操作的整数，要么和 你想要的或者你没有。
但是，加，减，和时间 工作完全像你期望的那样，
除外在稍微类型。
所以，你可以乘花车 整数，而那些各种各样的事情。
>> 套作品完全一样。
您可以使用两个等号。
inequals--大于，小于 比，这类things--的
的含义是 你熟悉他们。
>> 其中C使用这些操作符， Python使用稍微英语
可读的。
因此，而不是两个，＆符号，你 从字面上键入单词“和”，“或”，
或不。”
就像在你的if--您 条件语句，
我们在前面看到的，这个语法在C中 对应于这种语法在Python。
还有的不是一个很大的不同 除了一点点，有
左右两侧的标点符号。
此外，其中C将别人 如果，Python使用ELIF，
但这些大多是 表面水平的变化。
>> 迭代像这往往是 写在这个成语在Python。
您可以制造这样的 在外面while循环的事情
如果你想，但你 当然不必。
再次，如果你想要的 打印出的数组元素
你可以这样来做。
一个有趣的事情 有关Python不过，
是，你不需要 使用这种模式，
你可以使用一个 稍微更优雅之一。
你说的在元。
>> 因此，而不是要在这里 并运行在指数，
然后拉出 单个元素，
你告诉了实际只 碾过元素本身。
然后，无论你做什么 内可以直接操作
的元素，这是非常有趣的。
我们将see--我们将使用 一次又一次的成语
当我们通过代码走。
>> 这是，再次，一个例子 的东西，我会
调用Python魔术，虽然有 非常技术性的原因，它的工作原理。
而且有技术的东西， 需要是真实的有关数组为了
这个工作在幕后。
问题是，大多数类型 你会期望这个工作
有过这样的实施了 你在内置的语言。
>> 另一件事，这将是很好 如果曾在每一种语言，
但也有一些原因，它不能， 打印此字符串此次数。
其实Python，这不正是 你想什么，这只是好玩，
而意味着我们实际上可以 减少这种程序，再次mario.c。
而不是迭代了很多，我们可以 只是说，我想要的空间一定数目，
我想哈希的数量， 和一些散列底。
再次，我们使用这种格式。
>> 在这里，我们正在传递 一个变量这种方式。
再次，我们并不需要说 什么类型的变量是的，
和唯一的一次，我们将 得到的错误是在运行时。
当有人试图 传递东西，
它会来到这个功能就好了。
如果我们在这里楔因为这不是 您可以创建范围过的事情，
我会得到一个运行时的错误， 我得这种方式进行调试。
但在此期间，我没有 要非常小心什么
被传递在，只要在实际 执行这一切工作非常干净。
>> 我甚至可以使这 一点点清洁
使用特定内置函数 对字符串，它是右对齐。
这仅仅是一个有用的功能 躺在身边的图书馆。
这是在文档中 如果你去寻找它。
我说，好，我马上要开 这串，散列一些号，
我想右对齐它 - 垫 它与空间是这个长度。
>> 再次，这是在 文档，这使us--
我居然通过点击these-- 这给我们带来了我们的第二条规则
对于Python--标准库 功能的方法是你的朋友。
而它往往是值得的 去寻找我不知道
如果有，只是做这样的事。
有可能是。
如果您想垫 一个字符串，如果你愿意
喜欢拿回来 半字符串，如果你愿意
想通过要搜索的字符串，如果 你想砸几件事情
有串起来 与他们之间的逗号，
有标准库 功能这样做。
>> 它使你的生活 如果你使用他们更容易
而不是推出 一切都要靠自己
在五行代码在这里， 五行代码在这里。
这确实开始于 加起来实时。
>> 一个有趣的事情 关于如何被调用。
你会发现，有一个点的事情。
我对留下一些对象， 然后我打电话给一个点的功能。
这是Python的一种范式 使用用于安装的方法为对象。
我们会谈论这个 很简单地底，
但要知道，我们既可以操作的 事情采取那件事说点
不管，或致电 一个函数，它接受
该对象和其他一些参数。
>> 因此，这些都是方式 得到的东西在Python中完成。
而无论特定 功能实现
在这种风格或本 风格是什么，你
应该寻找，直到你得到一个挂 而且一个很容易掉进去。
有一个或多或少凝聚力 背后的Python理念
你吸收大部分 在它写了很多。
在某些时候，对这些哪一个 东西将被实施为
变得自然。
现在，这只是一些 你学习，你搞清楚
每一个人的事。
>> 因此，标准库 函数是你的朋友，
他们让你写的东西， 占用这么多的空间真的很快，
真正优雅。
这实际上可能更 清晰的，我会说，比C程序
在那边。
更何况是这样一个事实 总之，你能适应整体的大象
在太空，我们已经得救了。
>> 另一件事，这是一个实现 马里奥的这点C，我认为
是最短的，你可以得到它。
它不具有的get整型，但 它硬码10的值
相同的方式，这个人能。
原来，在这一个时钟 84个字符，而Python是64。
这是无限多 读比这个垃圾在这里。
所以Python是在太空中更有效。
这是稍微低效率 在时间，但不是很大。
>> 列表是Python中一个重要的事情。
我们还没有看到他们，但他们 操作很像数组做C.
所以在这里，你可以声明它们， 你可以将它们传递到一件事。
现在广场モ 阵列的这些事情。
此外，我们还没有声明 类型，但是如果我们尝试使用它，
什么，你希望 整数数组上工作
是去工作在 整数数组。
>> 这是一个东西 你绝对不能
做C，因为 记忆是如此的手，
但很容易做到在Python。
如果我想我的数组要大一些，我可以 追加一个元素，它和它的罚款。
>> 这是怎么回事幕后？
解释器会去 出来，并得到一些内存，
也许它会得到一个 额外的内存点点，
所以我没有，所以我没有 以realloc的每一次。
但多少有更多的 内存它需要？
这不是决定 你必须做，
这些都决定了 解释是要干什么。
>> 在这里，我们看到的范围 两个参数，
但它仍然将是包容性 顶部，所以我们增加1那里。
这是一个成语，这是一个更 聪明的方式来写这样的事情。
这就是所谓的名单理解， 在这里我们在说什么
是我想放在我的平方 对i在此范围内的每个值。
这件事情在右边可能是另一种 数组，这个东西在左边
要任何特定的功能 这将需要在我作为一个变量
并给我出了一些成绩。
>> 我什么都做的是， 我要去构建
一个数组的所有这些事情 在此范围内的每个值。
这是超级优雅，超级短线， 它很清楚这意味着什么。
这是一个 things--这是再次，
1 of--非常象征性的 原因是人们喜欢的Python。
如果你喜欢编程 像这样，那么Python
是一个你可能会喜欢学习语言。
>> 再次，有技术 原因这工作。
但就我们而言， 我们或多或少也不在乎。
>> 所以，如果你想打印出清单， 一些相同的成语是有用的。
因为我在这个范围内，我们可以 通过所有的东西指数
然后全部打印出来。
你会看到这里len个。
如果你曾经想要得到 该阵列的长度，这是
很容易在Python中， 它很难在C.
这将打印出完全 你想它期望。
我们也可以，因为我们已经看见， 遍历数组中的元素
直接，然后只谈 它们，而不是具有索引
回每次阵列。
>> 而这是你可以做的事情。
因此，在C，如果你问的东西 这样，打印会说，
这是一个整数数组。
这绝对不是一个 字符串，我不能打印。
Python的或多或少的不关心。
这就像，是有办法，我 可以把这个在一个字符串？
是的，我会的。
所以我就打印了这一点。
这意味着你可以 做事like--这些
最困难的部分的 游戏十五，写
很简单的Python编写的。
>> 你会看到有 of--在这里一点点
我投一个整数为字符串， 我必须这样做手工。
而且我要补充 它另一个字符串，
或Python的迷糊。
但是，无论当你 添加一个字符串的整数，
我是想获得一个 整数后面或字符串回来？
但同样，如果你只是 呼吁海峡上的事情，
故能在任何可能的 世界被转换成字符串，
它可能是 转换成一个字符串。
>> 在这里，我们看到了使用 嵌套列表理解
在左侧，一些索引，其中 正是因为你可以使用它，
还有一些打印出来的东西。
同样，我们定义了一些 功能，我们会打电话给他们失望
主当我们真正得到的文件。
返回的工作原理完全像你 从与C.找工作的期望，
我们可以建立像 this--这里的列表理解
有一个赋值给一个变量， 我们可以真正做到这一点更容易。
我们并不需要写搜索， 因为内置于语言
是，如果这件事情是在这个数组。
返回true，否则返回false。
所以这是发现的全部内容。
>> 排序的全部 需要调用排序，
这is--有实现 这种内置到一定的C库。
如果您想这个 那种倒退，你
可以忽略此可选 参数反向用真。
如果你想通过排序 串，这是内置式为好。
>> 因此，这不是说这些都是 你需要每天做的事情，
但这个想法是，这 是Python的理念，
所有这些事情，你会 那种想要做的是内置。
而最标准的功能， 这样的排序，长度，不管，
支持最明智的逻辑输入。
调用len阵列相同的 调用len在字符串的方式。
你multiply--你整理串 同样的方式，你数组进行排序。
>> 大多数标准功能 人们打造，
和大多数第三方 库人
建设，因为他们模仿 标准库的设计，
可以被称为上你的一切 喜欢，为什么不这样刚工作，
在C或多或少， 它将工作在Python
因为人的工作背后的数字 什么事是再操作
适当就可以了。
如此反复，技术背景，但它 使我们的生活更方便程序员。
>> 因此，这里的文件I / O。文件I / O有很多 小东西，使之复杂，
所以有资源 在网上，但简而言之，
调用打开一个文件 命名与特定类型。
这就是阅读，阅读和 写，写或追加。
你读了一定数量的 人物出来，你打印的，
你会得到你好！
我的意思是，像这样的文件有你好！
在这里面，叫阅读， 你会得到什么回来
是具有所有的字符串 所述阵列的其余部分的，
或所有文件的其余部分的。
如果你打电话再次读取， 你在该文件的末尾，
所以你没有得到 什么，所以你会关闭。
再次，这是.close而非 关闭文件，因为这将是C.
这是多还是少，因为f是一个 的事情，你想在f关闭。
但是基本的文件I / O是不 特别复杂。
同样，如果你想打开一个文件， 你想读一个特定的行，
你可以摆脱特定的 line--有内建了点。
如果你想写一个 首先，你可以写这个。
如果你想写出个人 叮咬，你可以写这些。
如果你想迭代 在一个文件的行
独立，因为我们从一块做 几个星期前，你可以做到这一点到。
同样，大多数对象，你会 希望能够遍历
支持循环访问它们。
在蟒蛇，文件也许是一个东西， 我想用线来遍历行。
如果它是一本字典 字和我
试图让这些个人 话说出来，那么，在这个循环中，
行这将是 反过来，这每一个字
将会为每行要执行 在该文件，直到该文件的结束。
再次，如果我打印出每个 线，线配备了新的生产线，
所以我设置结束 回这样的事情。
然后，我会得到我的文件的内容。
>> 它工作在第二件事 某些方面如列表，并在某些方面
作为东西基本上 功能更强大，
有字典，这是真的 酷使用，但基本上都是乱码
表的化身。
您创建一个使用完全相同 两个字符，这是真棒
如果你试图实现 哈希表您的问题集，
你知道多少痛苦，可以。
但是，人们已经做 它，做的这么好，
你不必 担心它了。
>> 然后，你可以插入个性的东西。
哈希tables--或词典 不特别
关心你存储在其中的内容。
因此，如果某些条目数， 有的条目列表，
如果一些条目其他字典， 有的作品是字符串，
Python不很在意。
>> 同样，如果你进入它期待 一个字符串，你会得到什么
是一个数组，那是你的问题。
也许这是错的谁 以为是放的东西
在字典中，也许这是你。
如果是一个人 否则，希望他们
很乖什么 打算在字典
并没有留下任何的缺陷 让你掉进去。
>> 但标准的功能将 给你回乖巧的事情。
因此，他们说这个回报 背串的字典，
那么一切你会 摆脱是一个字符串。
如果你做一些这方面和跳闸 你，好了，这可能是你。
Python的肯定给你足够 吊死自己的绳子，如果你愿意的话。
现在我们就可以打印出个人 这个元素，这回报
正是你所期望。
正是你所期望的，我想， 是，我使用了很多的一句话，
但是这更多的还是 更少的Python是如何工作的。
如果你问一个东西是不是 它，Python会抛出一个错误
它会退出你出 你在任何程序。
它会实际打印出来 比更多信息，
它会指出你 - 它会 添加一行，等等。
>> 并再次，也许我们要 遍历字典
并找到所有的东西在里面。
在这里，我们遍历 两件事情在同一时间。
因此，我们会用一个键，值做到这一点， 但随后打印出所有这些。
>> 如果我们想cast-- 如果我们真的跑了这一点，
我们将有一些麻烦，因为 on--当我们去与大卫，
如果我们这样做不是不可能add-- 它转换为字符串第一，
我们无法添加该数组 串上的字符串。
但是，如果我们投它一 字符串，我们得到的东西
像这样的，这也许是 我们希望阅读。
>> 这是拼写检查。
我们只是读的东西。
因此，我们可以读到 个别字为线条。
我们砍掉最后 的事情，所以结肠癌减1
关闭要吃掉了we--的最后一件事 字符串的最后一个字符。
我们会说。
好了，这些中的每一个得到 插入到这本词典，
映射到值1。
我们不特别 在乎那一个，
但它只是在那里说，哦， 这件事情我会在字典中。
因为后来我们是 要做的是我们
会说，好吧，如果是 在字典中的。
>> 同样，这种检查 会员已启动运营
使用完全不同的 算法相比它将在一个列表中，
但我们把它以同样的方式，这 是一些Python的糖衣的
事情使他们更容易使用。
再次，我们已经看到了 以前这样的事情。
这基本上是找到，或 它是完全一样的语法
为找到，但操作过一个 完全不同的结构。
同时，我们也没有特别在意。
因此，这些都是东西，你 被要求实施的拼写。
以这样的速度，我们将得到 或多或少都做过pset时的。
>> 听众：所以这 基本上只是回来
如果它不为拼写错误 匹配的东西在字典？
ROSS RHEINGANS-YOO：是的，是的。
因此，这是一 一问题的适配设置
这要求你这样做。
>> 听众：为什么行减1呢？
ROSS RHEINGANS-YOO：所以 当你迭代
在一个文件要求 由线，这些线
配备了一个新的行字符 在它 - 负1的端
仅仅是这些店关闭。
而这是一个特别灵活 索引到的东西的方式。
所以，如果你有一个字符串， 你想，还有我
要开始在字符的三位 我要去到最后。
3结肠会为你做的。
如果你喜欢，我要开始在 开始，进入到最后减1
字符，冒号减1。
如果你想从去 第三要负第一，
那么你会说3减1。
>> 此外，如果你想索引 到东西从后面算起，
你只指数与负号。
而且，因为其中C 会爆炸或者
喂，你其他的内存，你没有 访问，听到你可以说减1
意味着最后一个但1 字符的字符串。
>> 模块是version--是 类似物在C库
而对于很多有用的东西。
很多事情，你会 喜欢做在Python，
除了简单 操纵变量，
要挂钩到 较大的大库
接口多 对于交互功能
与世界其他地区。
SYS是其中之一 与一群工具
这是对交互有用 与系统本身
并将其导入像进口SYS。
>> 还有来自更多文档 是，你可以去这里，
或者你可以找到关于谷歌 通过谷歌搜索的Python SYS。
您键入进入。
第一连杆将是 在Python 2的文件，
第二连杆是要 是文档的Python 3。
>> 如果我们写出来，看上去一个文件 像this--如果特别，我们
看着上运行 命令行参数，
像我们学会了做的很 早在这个类。
这并不难。 你可以出去的argv，
这是其中的一件事情 这是由SYS实现。
它没有内置到 基础包，但同样，你
可以通过导入扩展它 从SYS该功能。
你会SYS调用它。
随你。
这里还有argv的。
实际上有没有 ARGC在sys，因为你
可以通过调用LEN得到它那么容易。
然后，我们印制了这一点，那么我们 跑在我们的终端echo-args.py。
我们回到一个数组， 这是第一个参数。
再次，这是的argv 0，这是 那得到了所谓的东西的名称。
如果我们有更多的把它称为 参数，我们会得到那些回来。
这是获得的一种方式 命令行参数。
如果你想，你把国旗 或覆盖特定的事
一个特定的默认情况下， argparse是你的朋友。
而你又发现，在网上 在蟒蛇argparse在谷歌。
>> 有几个实用的 你发现自己使用的模块
并再次，如果你花任何时间 这种语言的进口jsons
读取进出的JSON 文件，没有那么复杂。
你打开一个文件，你就叫json.load 在该文件和你回来的事。
那是什么东西？
这是一个JSON对象。
如果这一JSON有数组， 在Python有数组。
如果这一JSON有 关联数组，Python的
字典，字符串， 和数字，等等。
你想甩了出来，你 打开一个新的文件，你叫转储，
和负载和转储 进出的字符串。
>> 同样，泡菜被称为 在基本相同的接口。
这是如果稍微更有用 你倾倒Python对象。
所以，如果你曾经想救 一个版本的当前状态
为未来的一个可变的 你的程序的运行，
泡菜是Python的 库这样做。
>> 如果您有任何形式的 可写入出可变
像文字和字符， bytes--像这样的字典，
我们可以写下来，我们 可以把它写下来作为
就像一个JSON对象，这是 从字面上这些字符。
然后它会很容易 一个人打开它up--开放
阅读它。
如果我们没有特别 关心人读它，
我们可以更有效地包装，甚至 成可稍后被解压形式
或可稍后被夸大。
这可以节省80％的 空间，你的对象可能
如果需要你写出来速记。
>> 你叫咸菜很 相同的方式 - 转储，装载
然后你会得到你的东西回来。
所以，如果你正在写很 简短的Python程序
要保存状态，然后再阅读 他们回来后，像这样的事情
是你的朋友。
你可以很 轻松地将它们倾倒的JSON。
大多数Python对象 可以转储出JSON
如果有任何希望，在结构 它们可以表示这种方式。
>> 这些都是只不过是冰山一角 冰山上模块是有用的。
因此，SYS，操作系统，多，是 排序基本广为使用的东西
我们需要与之交互 文件系统OS，
像os.isfile，os.isdirectory， os.makefile，这些都是你的朋友。
如果你想互动 与特定文件类型，
JSON，咸菜，CSV格式。
如果您想与网络交互 页面，由urllib获取HTTP
页面。 bs4-- BeautifulSoup-- 这是一个美妙的解析器的HTML。
你在一个HTML和你运行它 现在得到这个嵌套数组对象，
你可以穿越过 眼含，与像只是寻找
如果是在，这太棒了。
>> 有一堆 包running--
做特别mathy的事情。
所以，如果你想乘， 反转，变换矩阵，
numpy的是使用的人所有 在世界各地的这一点。
SciPy的是更加有用 在这个方向的工具。
sklearn--机器学习， 自然语言处理，
超级有用的东西，得到 用Python实现所有的时间。
>> 再次，需要稍 更长的时间来写 - 对不起，
需要稍长运行，但 真正的工程师倾向于理由
使用Python是因为你往往会 阻止你写的代码，而
比你的计算机上运行的代码。
所以，如果你打算写一 程序，这是许多其他人
要使用 永远的，如Linux，你
可以写成的。如果你是 打算写一个计算引擎，
你可能会在Python，如果你需要写 改变它每隔几个月。
有些人会写在 C，因为他们是这样的。
>> 因此，我们已经看到了进口SYS 为把事情的一种方式
对越来越模块到程序中。
你也可以将其导入为 一个昵称，如果你愿意的话。
此外多是痛苦的 每次都打出来，所以导入为MP
然后，任何时候你 用它在程序中，
你会说mp.process，或你有什么。
如果你想导入 只有一个单一的东西，
这样的urllib有一个东西叫 的要求，因此你可以导入。
后来，你就不会调用它作为 urllib.request里，但正如请求
通过它自己。
>> 你可以导入所有 从模块，如果你愿意的话。
这是偶尔不是一个好idea-- 这通常不是个好主意，实际上。
因为你very--因为如果什么 在该模块有一个名字，你
想用别的地方 在你的程序中，你不能。
>> 而且它并不总是明显 这是这种情况。
为了确保 你在做什么是安全的，
您需要打开 该模块并浏览所有
这最终在名字 那里 - 所有的功能，
所有的变量 住在该模块，
因为你把所有的 他们到当地的命名空间。
>> 所以有人这样做。
通常建议 你不这样做。
但是，人们做了这一切 的时间，因为他们
懒惰，不想打字了MP。
任何事情，永远。
>> 所有这一切都谈模块 带我到处短暂交谈
你如何设计程序在Python。
第一个步骤是检查，看 别人已经做过的东西，
或做90％的事情。
机会是他们可能有，而你 应该去得到他们的事情和运行。
或者写它周围的包装 以使其适应你的目的。
这是唯一有后 失败，你会再
去和写 - 开始考虑 你将如何把这个事情做好。
有很多东西 在那里，这就是
的一个最有用的 事情有关Python。
像语言 优雅，语言
很容易使用，而且还因为 它是如此的优雅，易于使用，
人们一直在使用它了 时间长，有很多东西
在那里，你可以 利用供自己使用。
>> 所以Python的最后一条规则是，有人 其他人已经大概写
为一个模块， 别人已经拥有
大概写了一个库的。
在尝试做的事情，看看 看它是否得到落实。
这并不难。
所有我竖起模块 之前，有可能是一个例外，
预装在每 标准的Python安装。
所以，通过调用 导入什么，你
拥有所有这些功能 在您的指尖。
>> 开始结束这一 谈话中，有几件事情
我已经离开了黑盒 和那种掩饰，
并有一些善意的谎言，我已经 告诉记者，为了诚实的，
我至少会点 在这里，即使我不会
去超深入到所有的人 和它们的技术说明。
>> 很多的东西 我已经堪称神奇
是别人会叫 面向对象编程。
因此，有很多things--的 所以变量往往不
简单的字节坐， 存储器，但是非常复杂的
有内部对象 国家有关职能和大量的
隐藏的变数，很多 隐藏的功能，这
让你把它们变成字符串， 它可以让你在它们之间迭代。
如果你正在writing-- 其原因，他们
拥有所有这些丰富的功能 是因为people--
的建筑师 language--已经
通过和每一个标准 对象，放在功能
说这是怎么了，这是 这是怎么回事操作
如果有人想迭代它。
>> 所以一切有人可能 可能要遍历，
已逻辑写在 手动你怎么是
应该遍历该对象。
一切，你有可能会希望 倾入一个字符串有逻辑写入。
这是，如果你调用该函数 你想甩了这一点，为一个字符串。
这就是为什么你可以 调用len的事情，这
所以，你可以拨打电话进行的，这是 为什么你可以调用如果一切
你会想，因为 这些都背着他们，
技术知识，如何做到这一点。
>> 这是我的东西 超不打算进入。
但对于事情的名单是微妙 从for循环C形式不同，
你可以阅读所有关于上 互联网，如果你有兴趣。
有黑暗的一面全部 这一点，我提到，
所以有两件事情。
第一，此面向对象的 节目增加了大量的开销
随机的东西，所以你最终 使用起来更大量的内存;
你最终使用多一点 时间比你，否则。
该other--但更 阴险黑暗的一面，以这种
是，如果事情只是行动 就像你希望他们
无需你觉得超级难 是否这应该是一个int
或是否应该有一个 浮动，这也许是因为在这里
你生产一个int，但在这里你 的看法，但他们会always--抱歉，
它可能是这里 你产生浮动，
但是当你到了第二部分 你的程序，你在想，
哦，好吧，但他们会 总是递给我一个int。
如果他们不这样做，这是可能的 你的地方楔形，
如果您尝试使用该索引 到一个数组，或你有什么。
>> 这样的真正的一 有用的东西关于C是
它迫使你想真的 你让any--硬之前，
你把任何变量之前 进入存在，像什么
是该变量的类型。
而这将有 该类型所有的时间。
>> 这不是真的 Python的，而事实上，你
can--如果你只是 那种去用耳朵，
你做出一些决定 单程在一个地方，
有些决策之一 在其他地方的方式
没有把足够的东西背后 在其他地方的场景
赶上正确的事情，你 可以得到一些非常奇怪的错误。
而该程序可以继续运行 很长一段时间，因为它是
做了很多工作，说，好 这个东西可以这样操作，
所以我要运行的方式。
>> 而事实上，事实上，它推 转发通过大量的小错误
也就是说，往往当 错误实际上是坏
而你真的想解决这个问题， 它最终英里away--程序
最终停止英里远 从什么时候你有你的错误。
而这么一件事，我们希望 项目办，sometimes--一件事
我们想计划 当我们正在调试做
是失败大声失败很 很快出问题的时候。
>> Python是非常糟糕的那个。
Python是非常善于不 失败和滚滚向前
通过意想不到的事情。
因此，这是因为当用 你写的小程序。
当你变得复杂 错误有时
需要很长的时间来逗他们。
>> 因此，有黑暗的一面是对所有 这一点，像它只是工作。
这只是工作就像你希望它。
不同之处在于，当它不，你结束 在一个完全不同的地方
并试图找出其中 这是你出了问题。
>> 垃圾收集is--所以 一件事，你会发现
是任何这些东西，那 我带入existence--
这些阵列，这些词典，这些 对象，这些files--永远不会被释放。
有没有电话 自由在任何这种谈话。
这是在C面，由于 我们从来没有为这些事情。
>> 但是在Python端，没有自由。
事情自动获得 释放时的Python
认为你不看着他们。
这真是好不释放的东西， 你可能仍然有可能在看，
但是，这意味着如果你 去分配这个大的事情，
和你喜欢的哦 我用它做了，
这是很难说的Python ，你用它现在做的。
>> 有时你可以设置 该变量是无，
然后希望最终 垃圾收集器
谈到通过，并清除它。
但同样，你不 有超过对照。
而原因之一，人们用C 对于真正的性能是至关重要的事情，
这种能力真的 知道什么时候分配内存
并且当它的释放，并有 很多控制权说，
我使用的是没有更多的内存比我更需要。
这恐怕是 Python是不是很大的。
听众：我能问你一个问题吗？
那你的意思是不能大声？
>> ROSS RHEINGANS-YOO：所以，如果 什么地方出了错
和你在调试 模式下，你会很经常
希望你的程序告诉你 哪儿它出了问题，
不只是静静地停止运行。
但你实际上它打印 出各种有关
喜欢，这里是这样的。
这种事情发生。如果你要打印 如果你正在运行一个Web server--一个wen--
>> 听众：[听不清]
>> ROSS RHEINGANS-YOO：是的，如果 您正在运行一个Web服务器，
它有时坏，如果你 总是丢弃错误，
和你说， 也没有工作。
我要停下来。
我只是忽视 并继续进行下去。
因为这样你可以在得到数百 这些错误，并没有看到他们。
>> 这无疑是有益的 用于调试
如果每次你的Web服务器中进行的 错误，你有那持久的记录。
也许你甚至想要的程序 停下来，让那些记录
不要让她被埋在的东西。
但同样，这是在调试模式。
>> 常在生产模式中， 世界是一个有点不同。
而在我参加竞选的小脚本， 那里的东西，我说的做
可能只是一点点关闭 从我希望它做的事，
然后进行排序，通过推动 错误的东西，你可能想。
在这些情况下，当然 Python的真正赢得它的开始。
>> 最后一件事，我不说话 在this--，我没有谈
但可真是气死第一 时间你有这些错误之一，
和第二以及第三和第四 时间，你有一个这些错误。
Python中，我提到 它使用空白
告诉你缩进了什么水平 而你在什么功能模块，
它把制表符和空格不同。
所以，如果你卡在四个，然后 下一行有四个空格，
即使它们出现为 同样数量的编辑器，
Python不把他们一样。
>> 事实上，巨蟒把标签 而像油和水的空间。
他们只是不同的事情。
没有特别的 长度一个选项卡，
所以它不是像一个标签等于8 空间，所以你会避开它
那样。
像，当它说什么 白色的空间我在的水平，
它实际上是在寻找一个 空格和制表符的图案。
所以，最好的办法来处理这​​个 是要始终使用空格所有的时间。
>> 而事实上，在Cloud9 IDE和CS50 IDE，
你的Tab键插入 四个空格代替中
的标签，这是超级有用。
虽然再次，如果你写了一个Python 计划与标签，就可以了，
它只是如果有人 走进去，尝试添加
一行到你的程序， 有四个空格为每一个选项卡，
这将打破。
而这将在某种程度上打破 这确实是不可见的。
尽管实际的错误 消息，它抛出
必须与新 缩进这里没有预料，
or--如果在谈论缩进 它看起来像它是错的，
这可能是因为 有一个制表空间的问题。
他们还在真气调试。
在最大的全 这次谈话，我没有
得到，因为它是真的 一个复杂的，微妙的话题，
并没有必要做任何 我们到目前为止所做过的事，
有一个叫做元组的概念。
他们在那里很像 阵列，你不能修改。
他们习惯遍布因为地方 它们是有用的很多东西
该数组是不是有用。
>> 但是，如果你想使一个数组， 那么承诺的解释，你
永远不会想修改 件事 - 事实上，如果要修改，
你会是一个新的与新 在它 - 这些值的元组。
而不是产生 他们用方括号，
你生产他们圆括号。
为什么你会用这些东西， 是的问题一点点。 。
唯一的事情，我会 说的就是你
可以使用元组作为 指数词典。
不能使用数组作为 指数词典。
为什么是，再次，技术和 我不会跑进去。
>> 我还没有触及处理器集 在这次谈话是pset6。
因此，这里是你如何倒是 实施A--这里
你会如何​​在Python实现pset6。
同时要注意的Python 设计周期，第一件事
当你说你做 写程序是检查
看是否有人的已经做了。
>> 事实上，如果你想 以serve--阿帕奇50
大约做这个， 但它不来
安装在Linux机器上的标准。
Python做，并且是在Python 简单的HTTP服务器确实也是如此。
如果你曾经在Linux机器上， 或CS50的Cloud9 IDE外部
你想成为这个电流 目录以一个特定的端口，
蟒蛇米SimpleHTTPServer 端口提供的。
您也可以导入 简单的http服务器
而且它有很多的功能，如果 要自定义它，或改变它，
或者运行它 - 利用它来 运行自己的服务器服务。
>> 所以这是Python的概括地说。
而这一直是CS50。
谢谢。