01 -Python入门- Lesson1 为何要学习 Python 编程

01 Python入门 Lesson1 为何要学习 Python 编程

因为很酷很帅很性感啊!
人生苦短,我用Python!

1.欢迎学习这门课程!

**Python3!!!**课程中的所有代码,都请在Python3下完成。
对应的是Python2版本,虽然应用还有很多,虽然包有的兼容性好一些,但是请记住,作为初学者:你应该只用Python3
其实Python3在2008年就发布了,为的是:It was designed to rectify fundamental design flaws in the language—the changes required could not be implemented while retaining full backwards compatibility with the 2.x series, which necessitated a new major version number.

人话翻译过来就是:Python2有一些不合理的地方,痛定思痛,我们发布了Python3,好消息是真的特别好用,坏消息是,Python2的代码好多都不能被Python3兼容呦。 Python 发展历史

2.课程概述

注:因为课程后来增加了 Turtle 画图这一课,所以课程编号有顺延。

Lesson3 数据类型和运算符

  • 数据类型:整型、浮点型、布尔型、字符串、列表、元组、集合、字典
  • 运算符:算术、赋值、比较、逻辑、成员、恒等运算符
  • 内置函数、复合数据结构、类型转换
  • 空格和样式指南

Lesson4 控制流

  • 条件语句
  • 布尔表达式
  • For 和 While 循环
  • break 和 continue
  • zip 和 enumerate
  • 列表推导式

Lesson5 函数

  • 定义函数
  • 变量作用域
  • 文档
  • Lambda 表达式
  • 迭代器和生成器

Lesson6 (选学)脚本

  • Python 安装和环境设置
  • 运行和编辑 Python 脚本
  • 与用户输入交互
  • 处理异常
  • 读写文件
  • 导入本地、标准和第三方模块
  • 在解析器中进行实验

3.Python 编程

课程中提醒了3条 Python 编程时候的注意事项:

  • 区分大小写。
  • 空格很重要。
  • 通过报错 Error Message 了解错误信息。

其实每种语言都有自己的一些习惯,随着使用的深入会逐渐接触,也会慢慢熟悉,掌握一门语言,是从写bug开始的。另外遇到各种花样报错也是编程中的日常,接下来将会扩展下关于软件思维的一点闲聊。

Plus 软件思维

其实Udacity在新版本课程中(SVIP Part I:欢迎来到你的专属数据分析师纳米学位)中的一些说明非常到位,请没什么 Python 基础的同学一定要看看:

其中一些内容摘选扩展如下:

异常处理

当软件出现了Bug,我们使用的抓虫方法:

  • 二分定位法:把现有程序一点点注释掉,运行查看是否仍然报错,逐渐缩小Bug范围。
  • IDE调试:你可以通过加断点、单步调试的方式,通过获取清晰的中间结果,来确定你的代码逻辑是否符合预期。
  • 小黄鸭调试法:在程序的调试和除错过程中,在桌上放一只小黄鸭(或其他任何东西),耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感与发现矛盾。
  • 在Python入门课程中,你还会学习使用Try / Except语句来捕捉异常,在解释器中进行实验等更多调试技巧。
  • 发布在专业论坛上求助,你可以通过搜索报错信息的关键字,查看别人分享的经验和文章。如果你遇到的问题完全搜索不到,还可以到Stack Overflow。

必应Bing搜索

微软的搜索引擎Bing与HackerRank联姻后,加入了实时代码编辑器功能,允许程序员编辑和执行代码示例,实时查看运行结果,不过这一功能需要使用Bing国际版进行搜索。必应的搜索引擎的实时代码编辑器可以作为Stackoverflow和Stackexchange等编程问答网站的精简替代。除了学习在某个语言中特定算法、代码是如何编写的,你还可以检查同样的方案是如何在其他编程语言中实现的(小遗憾Python2示例比较少,咱们课程以Python3为主)

搜索关键词的选择:
好的问题比完美的答案更重要。用几个关键词来精准描述你的问题,比“为什么我的Python安装失败”或者“我的程序为什么报错了”更有可能得到有用的结果。
尝试使用首次搜索时在网页上发现的关键词,使搜索引擎在后续搜索中得到更好的结果。
复制粘贴错误信息作为搜索关键词,这样会出现错误解释性信息和潜在原因。错误和异常中通常会包括错误相关的特定行号、变量名等信息,注意在搜索框中忽略这类特定信息。
添加范围限定的关键词,比如当你要搜索python相关的问题时,加上“python”这个关键词,可以缩小搜索范围,更容易得到有用的结果。

搜索引擎的高级技巧:

  • 精确匹配搜索:使用双引号 “”,在搜索框中键入TypeError: ‘tuple’ object does not support item assignment,可以得到该段文字连在一起的结果,如果你想要一个没有方差的精确异常,那么这可以剔除掉结果中令你讨厌的部分。
  • 去除搜索:比如当你搜索Pascal这个编程语言时,会出现大量关于pascal作为压力单位的搜索结果。那么你只需要键入pascal -unit 就可以返回包含pascal但不包含unit的搜索结果。注意减号前面必须有空格,后面必须没空格。
  • 文件类型搜索:使用filetype,在搜索框中键入filetype:pdf 机器学习可以搜索出有关机器学习内容pdf文档,而且这些文档基本都是可直接下载。还可以变换为其他的如filetype:doc、filetype:ppt、filetype:xls等等,注意其中的冒号为英文的冒号。
  • 站内搜索:使用site,在搜索框中键入site:zhihu.com 无人驾驶,可以在知乎搜索有关无人驾驶的一些资料信息,这个特别适用针对某些信息可能在哪些网站上出现的一个快速搜索方法,注意要使用英文冒号,网站名称不用加www。
  • 标题中搜索:使用intitle,在搜索框中键入intitle: python 教程,表示搜索结果的标题都必须含有python和教程两个关键字,这种方式可以帮助你排除无关网页。同理还可以使用限定词inurl:在 url 链接中搜索,以及intext:在网页主体中搜索。
  • 通配符 *:使用星号 >md.png COPYING Config.plist CopyAsMarkdown-demo.mp4 README.md _Signature.plist html2md.sh html2text.py ,填补搜索关键词中的缺失部分,不论缺失的是一连串单词的其中一个还是一个单词的某一部分。此外,当你希望搜索一篇确定性偏低的文章时,也可以使用星号填补缺失部分。

像程序员一样的提问

  • 使用有意义且描述明确的标题:
    如果是在论坛提问,给帖子起一个明确有意义的标题尤为重要,这能让相关人员快速判断出,这个帖子有没有点开阅读的必要。
  • 主题明确:
    让别人一眼就能立即明白你的环境和你遇到的问题。 若你的标题更好地反映问题,也能让搜索类似问题的人关注这个讨论,而不用再次提问相同的问题。
  • 去掉无意义的感叹、符号:
    在论坛或其他社交媒体中,大约 20 字以内的标题是抓住资深专家注意力的好机会。别用喋喋不休的帮帮忙、跪求、急(更别说救命啊!!!!这样让人反感的话,用这种标题会被条件反射式地忽略)来浪费这个机会。
  • 好标题范式:目标 - 差异:
    一个好标题范例是目标 - 差异式的描述,许多技术支持组织就是这样做的。在目标部分指出是哪一个或哪一组东西有问题,在差异部分则描述与期望的行为不一致的地方。
  • 精确的描述问题并言之有物:在描述你的问题时,最好能够包含以下几个方面:
    • 程序运行过程当中产生的错误信息(可以贴上你的截图)
    • 问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息)
    • 为确定问题而采取的诊断步骤,你的猜测和思考过程
    • 你觉得可能产生错误的位置(贴上产生错误的源码)

编程思维的养成

知易行难。在你掌握数据类型、运算符、控制流、函数等编程基础知识以后,也许仍然会在实际任务(比如Udacity的课程项目)面前感到无从下手。这是因为编程思维的养成不仅仅是编程语法的记忆,更重要的是解决问题的能力。我们建议你在剖析实际任务时,采用自顶向下的设计方法

  1. 任务拆解
    任务拆解是指把问题分成较小的部分,从而简化问题的能力。通过分解,把问题切割为能用最小代码实现的模块,或分成具体的任务。
  2. 模式识别
    接着根据已有的知识和经验,找出新问题和以前解决过的问题的相似性,举一反三琢磨出规律。
  3. 逻辑抽象
    在解释问题或解决方案时去掉次要细节的能力。也就是说,将想法概念化的能力。比如,将问题里涉及的数据抽象到数据结构(变量,数组等),把数据处理过程可重复执行部分抽象成函数模块。
  4. 精确表达
    根据前三步的分析结果,设计步骤,写出算法,解决问题。

初学者心态

最后,在实践中应用编程思维解决问题时,初学者的心态十分重要。这里是一些额外建议,供你参考:

首先要有信心。

虽然可能你看了几个小时,找了一些材料,但却压根儿就没能把程序运行起来。但相信我,基本上所有程序员都是这么过来的,工作人员可以给你很多截图来印证这一点。

写代码,写更多的代码。

光看教程,编不出程序。跟着课程视频开始写,学着做练习、写小程序片段,然后写完整的项目,Learning by doing

切勿过于钻牛角尖。

遇到编程问题优先自己寻找解决方式,但这并不代表你应该在一个小问题/小练习中耗费过多时间。5年经验的程序员也不可能对所有面试题都对答如流,所以如果你在一个小练习上花费超过1小时,请及时发出求助,并告诉助教你的思路。

怎样实现目标

为了不让自己定下的目标成为立下的flag,优达在此推荐一个目标设置方法:SMART原则,让你可以更好地设定合理目标。

什么是SMART原则

在这里插入图片描述

SMART是五个英文单词的缩写:

  • S表示目标必须是具体的,
  • M表示目标必须是可以衡量的,
  • A表示目标必须是可以达成的,
  • R代表目标必须是有关的,
  • T代表目标必须有明确的截止期限。

具体性(S):
具体性是指要用明确而具体的语言清楚地说明要达成的行为标准,在涉及到次数的时候应该使用明确的数值,而不能泛泛地使用“多次”或“迅速”等通用性词汇。

在实际目标设置过程中,你可以通过回答六个W问题来帮助你将目标具体化:

在这里插入图片描述

可衡量性(M):

可衡量性是指目标的进度是可以跟踪的。如果一个目标的进度无法跟踪,或者说你也无法知道已经完成了多少工作,离最终实现还有多远,那这个目标就无法管理了。

怎样检查一个目标是不是可衡量的呢?你可以问自己下面的问题:

  • 我已经完成了多少工作?
  • 我还需要做多少工作才能完成目标?
  • 距离最后的实现还有多远?

其实这又回到了第一个特征,如果你的目标具体,那你的目标一般来说也是可以衡量的。

可达成性(A):

目标必须是可以达成的,或者说是可以实现的。我们常说:可以制定跳起来“摘桃子”的目标,但不能制定跳起来“摘星星”的目标。这就要求我们制定出的目标通过相关人员的努力最终能够被实现,而不是超出我们的能力范围以外。例如下面这目标是一个具体并且可衡量的目标:

我一个月内要在国内建造十座千米高的金字塔。这个目标具有明确的时间和地点以及需要完成的任务,也可以用建成多少米来衡量其进度。但这个目标就目前的科技而言无法实现,因此它不具有可达成性。

但有时候,制定一些可达成的目标也没有意义:

我明年读完某本书的一页书。我们并不是为了制定目标而制定目标,制定目标是为了实现自己的理想,因此一个目标必须是自己经过大量的努力才能实现的,这样的目标才能推动我们向前。

相关性(R):

相关性指的是实现此目标与其他目标的关联情况。如果实现了这个目标但和其他目标关联不大,或者说完全没有关联,那么这个目标的设定就是不相关的,对于其他目标的发展可能没有帮助。

当然,这里说的相关性是指和自己个人发展方面如工作和学习上的相关性。如果在兴趣爱好上设置目标,则并不需要那么严谨地遵守相关性的要求。毕竟很多兴趣爱好和工作、学习是不相关的,但是这些内容也可以对个人的综合发展起到帮助。

时限性(T):

目标的时限性就是指目标的完成是有时间限制的。没有时间限制的目标没办法考核,或带来考核的不公平。我们应该避免使用诸如“以后有一天“或者”最终“等不确定的词汇。

例如有人定目标的时候会说:我放假了读三本书。这样的目标已经具有比较明确的时间,但时间还不够精确,很多同学往往会拖到假期结束的时候才开始看书。正确的目标应该是:我放假了要读完三本书,每天读五页。

Python在线调试工具(转移到 00 Python 中)

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值