第三课.python编程基础(二)

   日期:2020-10-19     浏览:92    评论:0    
核心提示:在最开始,我记录一个内容:TPU,TPU是谷歌生产的专用于tensor计算的处理器。下面进入正式部分条件判断与三元表达式python中只有if,if else,if elif,if elif else这几种组合,判断的条件不是None,0,False就可以执行;如果借助elif就可以实现多分支判断:#条件判断 if elseage=66if age<18: print('young boy')else: print('adults')#多分支判断 if elifage

在最开始,我记录一个内容: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__方法的可迭代对象。
通过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("状态良好")

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

def addfunc(a,b):
    if type(a)!=type(b):
        raise ValueError('类型错误')
    return a+b
addfunc(5,'a')
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服