在最开始,我记录一个内容:TPU,TPU是谷歌生产的专用于tensor计算的处理器。下面进入正式部分

条件判断与三元表达式

python中只有if,if else,if elif,if elif else这几种组合,判断的条件不是None,0,False就可以执行;如果借助elif就可以实现多分支判断:

#条件判断 if else
age=66
if age<18:print('young boy')
else:print('adults')#多分支判断 if elif
age=66
if age<18:print('young boy')
elif age>18 and age<60:pringt('adults')
elif age>60:print('others')

关于三元表达式,a if condition else b,它只是一个表达式,如果条件不是None或者0,False,就返回a,否则返回b
三元表达式通常用于条件判断的场景:

a=1 if b>6 else 3

注意,不能按照if else的习惯,写成a=1 if b>6 else a=3,因为1 if b>6 else 3本身就是一个表达式

循环与循环控制

循环指的是for循环,while循环,控制是break,continue关键字的使用,只需要记住以下几点:
1.for循环:可设置迭代次数的循环
2.while循环:条件循环,不能设置迭代次数
3.break:终止整个循环
4.continue:跳过本次循环

迭代器和生成器

迭代器和生成器在以往困惑了我很久,因此我在这里特别记录一下这个部分
在了解迭代器之前,先明白什么是可迭代对象,一般来说,当创建了一个列表,集合,字典时,就生成了一个容器,比如:
一个列表[1,2,3,4]就是一个容器,这就是一个可迭代对象,所谓可迭代对象指可通过for循环遍历的对象。注意,目前这个容器并不能自己遍历自己(通过对象自身的方法来遍历自己,一般这个方法指的就是__next__,这个__next__就是魔法方法中的一个)。到这里,就该说出迭代器和可迭代对象的区别了,迭代器是具有__next__方法的可迭代对象。
通过iter()方法进行类型转换后,可以将可迭代对象变成迭代器。在原文档中,可迭代对象叫做iterable,迭代器叫做iterator,迭代器的__next__方法也有特点:只能迭代一次,不能返回到以前的索引,下面是相关实例,助于理解:

#迭代器与可迭代对象的区别,迭代器多了一个方法__next__
print("This is iterator")
li=iter([1,2,3])
print(next(li))
print("for循环开始")
for i in li:print(i)print("This is iterable")
lis=[1,2,3]
for i in lis:print(i)
for i in lis:print(i)


对于生成器,生成器必然是一个迭代器,生成器这个对象有两种实现方式:第一种是用生成器表达式实现;第二种方式是由生成器函数实现
生成器表达式类似列表生成式,只是将[…]中括号换成(…)小括号,例如:

>>> li=(x for x in range(30) if x%3==0)
>>> li
<generator object <genexpr> at 0x7f79e7581d60>

用函数实现的生成器就是函数中使用了yield关键字,这就是为什么看到yield总会牵扯到生成器这个对象的原因:

#生成器函数(带yield关键字的函数)实现生成器
def func(n):for i in range(n):yield i**2
gen=func(6)
print(gen)
print(next(gen))
print("借助for循环")
for item in gen:print(item)

正如gen=func(6)的声明,gen就是一个生成器,结果如下:

异常与调试

调试BUG,BUG的意思是昆虫,那为什么要叫找BUG,其实背后有个有趣的故事
在早期,人们使用继电器编程,美国的一名海军当时正在为完成一项任务进行编程,机器刚开始还好好的,但过了一会就出现了故障,每个实验人员都觉得很奇怪,这名海军爬上机器,在线路之中发现了飞蛾,飞蛾由于光和热的吸引,靠近继电器后被烧死,导致一组继电器短路,于是这名海军为机器调试取了一个形象的名字:找昆虫,也就是找BUG
发现异常有助于我们调试代码,使程序更稳定,在python中,常见异常如下:


NameError: 访问到没有声明的变量
ZeroDivisionError: 除数是0
SyntaxError: 语法错误
IndexError: 索引超出范围
KeyError :请求一个不存在的字典关键字
IOError: 输入输出错误,例如读文件,但文件不存在
AttributeError: 访问到未知的对象属性
ValueError: 传给函数的参数类型不正确,例如给数值型参数传递了字符串


通常,我们将有疑惑的代码放入try下,except会捕获对应的异常,并执行对应指令:

try:code
except ValueError:print("值错误")
except NameError:print("名称错误")
else:print("状态良好")

通过捕获异常,让程序不中断,确保执行完毕,实例如下:

try:print(66/0)
except:print("出现异常")
print("end")

虽然出现了除以零的错误,但程序依然执行完毕

除了系统发现异常,也可以通过关键字raise手动抛出异常:

def addfunc(a,b):if type(a)!=type(b):raise ValueError('类型错误')return a+b
addfunc(5,'a')

第三课.python编程基础(二)相关推荐

  1. python编程基础(二)~python安装设置 和 pip packages安装与使用

    目录 背景 1. 手动安装python.更改mac默认python版本 2. 手动安装pip 3. 安装package 4. package的导入 5. 升级.降级.更新package 6. 删除pa ...

  2. 第二课.Python编程基础(一)

    基础语法 注释 #行注释 """ 块注释 """ 代码分隔符 '\' code=\ """ Python St ...

  3. 负基础学python编程_【数据科学系统学习】Python # 编程基础[二]

    在上一篇中我们讲到了函数,如果你想在所编写的别的程序中重用一些函数的话,应该怎么办?正如你可能想象到的那样,答案是模块(Modules).我们这一篇就从模块说起. 模块 为了编写可维护的代码,我们把很 ...

  4. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  5. 课节2: Python编程基础

    课节2: Python编程基础 字符串进阶 字符串索引.切片 切片的语法:[起始:结束:步长] 字符串[start: end: step] 这三个参数都有默认值,默认截取方向是从左往右的 start: ...

  6. 【不会吧不会吧,不会有人真的三分钟入门Python了吧?】Python编程基础

    python编程基础 变量 字符串 字符串是Python中最常用的数据类型.我们可以使用引号('或者")来创建字符串. string = 'hello world.' name = &quo ...

  7. 微课|《Python编程基础与案例集锦(中学版)》第5章例题讲解(1)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 京东图书地址:https://item.jd.com/12571990.html 当当图书地址:h ...

  8. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(3)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 例4-10  把十进制数转换为其他进制形式. 例4-11  验证6174猜想. 例4-12.例4- ...

  9. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(2)

    适用教材:<Python编程基础与案例集锦(中学版)>,董付国,应根球著,电子工业出版社 例4-4 例4-5 例4-6 微课|中学生可以这样学Python(例4.3):百钱买百鸡 例4-7 ...

最新文章

  1. Python是如何一步步成为热门编程语言的?
  2. 事务隔离性与隔离级别
  3. webservice用完关闭连接_解决调用WebService报基础连接已经关闭: 服务器关闭了本应保持活动状态的连接的错误的方法...
  4. gmod的css模块放哪里,webpack打包css报错找不到模块?
  5. java ajax json 解析json数组对象数组对象数组对象数组_ajax传递包含对象数组的json数据...
  6. 让全球数亿人拍摄到更美的照片,【北京三星研究院】招聘
  7. messagehub讲解,如何获取MessageHub的其余管理API的API密钥?
  8. 2021 年百度之星·程序设计大赛 - 复赛 1001 Palindrome(结论,奇偶性)
  9. python pip 重新安装mysql_解决Ubuntu pip 安装 mysql-python包出错的问题
  10. Asp.net WebApi版本控制
  11. 最新版本Eclipse安装SVN插件Subclipse过程
  12. 【FXCG】如何成功启动SWOT分析法
  13. U盘启动盘制作工具哪个好用_U盘PE系统哪个纯净干净无捆绑?
  14. 告别无休止的甩锅,开发和运维如何高效合作
  15. xml 硕正报表_硕正轻量级富Web应用套件–硕正报表主要指标及功能清单
  16. ps教程:用PS和FLASH8做眨眼教材
  17. 《Bitly》可能是全球最好用的短链接生成工具
  18. html 输入年份,判断是否是闰年
  19. 华为p20pro快捷计算机,华为P20 Pro的这些隐藏功能,你知道吗?
  20. 电脑黑屏提示missing operating system怎么办

热门文章

  1. sulime text 3
  2. Leangoo团队敏捷开发实现过程
  3. 一个搜索需求搞垮微服务
  4. 贝壳大数据OLAP平台架构演进
  5. 网易实时数仓实践与展望
  6. 基于CAP模型设计企业级真正高可用的分布式锁
  7. Iaas、Caas、Paas、Faas!选择正确的平台!
  8. 来自顶尖JAVA程序猿的焦虑,拒绝中年危机,唯有一生力学笃行
  9. 分享15个堪称神器的资源网站,让你万事无忧!
  10. 如何解决组织协同?用智办事更简单!