Python - Day5

2017-09-27  本文已影响8人  姚屹晨

廖雪峰:Python教程

1.因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特bit作为一个字节,所以,一个字节能表示的最大整数就是255,如果要表示更大的整数,就需要更多的字节。

2.处理中文时一个字节显然是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所有,中国制定了GB3212(国标)编码,用来把中文编进去。

3.各国有各国的标准,就会不可避免地出现冲突,因此,Unicode(万国码)应运而生,Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题。Unicode标准中,最常用的使用两个字节表示一个字符(如果用到非常偏僻的字符,则需要4个字节)。

4.ASCII编码和Unicode编码的区别:
ASCII编码是1个字节。
Unicode编码通常是2个字节。

5.UTF-8编码诞生的原因?
①字符AASCII编码是十进制的65,二进制的01000001。如果把ASCII编码的AUnicode编码,只需要在前面补80即可。

②如果统一换成Unicode编码,乱码的问题就迎刃而解了。但是,如果你写的文本基本上都是英文的话,用Unicode编码会比用ASCII编码多一倍的存储空间,在存储和传输上就非常的不划算。

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

ASCII和Unicode和UTF-8.png

6.小结:现在计算机系统通用的字符编码工作方式。
①在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或需要传输的时候,就转换为UTF-8编码。

7.Python3版本中,字符串是以Unicode编码的,也就是说Python的字符串支持多语言。

8.如何将十进制数转换为十六进制:

十进制转换为十六进制.png

9.ord()chr()函数 - ordinal & character

ord&chr.png

10.bytes类型
①存在的原因?

字节字符字符串.png bytes类型.png

11.encode()decode()

纯英文encodeDecode.png 中文的编码和解码.png

12.要计算str包含多少个字符,可以用len()函数。

①如果换成byteslen()函数就计算字节数

len字符数和字节数.png

13.小结

14.list - 列表
listPython内置的一种数据类型,是一种有序的集合,可以随时添加和删除其中的元素。

②获取列表最后一个元素的两种方式:

获取列表中最后一个元素的两种方式.png

③不止-1喔,还可以-2,-3... a[-i] = a[len(a)+(-i)]

不止-1喔.png

④list是一个可变的有序表,因此,可以往list中追加元素到末尾:

list的append().png

⑤那怎么删除list末尾的元素呢? - pop()

list的pop()方法.png

pop(i)还可以删除指定位置的元素喔:

pop(i)删除指定位置的元素.png

⑦要把某个元素换成别的元素,可以直接复制给对应的索引位置:

asan换shoushan.png

15.tuple
①是什么?另一种有序列表,叫元组。

②和list的区别?

tuple的存在的意义?

tuple是如何表示的?

tuple用圆括号()表示.png

⑤这样表示存在一种歧义:如果tuple内仅有1个数据,注意要加个逗号,喔!!!

当tuple中只有一个数据时注意逗号喔.png

tuple所谓的"不变",是指:指向永远不变。即指向'a',就不能改成'b',指向一个list,就不能改成指向其他对象,但是指向的这个list本身是可变的!

tuple中的list本身是可变的.png

16.小结
listtuplePython内置的有序集合,一个可变,一个不可变。

17.if语句执行的特点,从上到下,如果在某个判断是True,则执行该判断对应的语句,就忽略掉剩下的elifelse

if x:   //x为0,空字符串,空list时,判断为False

18.input()返回的数据类型是str

input输出的是str.png

解决:用int()str转换为整数

int()将str转换为整数.png

19.计算1+2+...+100

1+2+3+到100.png while.png

20.我想打印1-10中的所有奇数?

①方法1

获取1-10中的所有奇数方法1.png

continue的一大坑

continue一大坑.png

③正确使用continue获取1-10中的奇数

continue就是跳过本次循环.png

21.小结
break语句可以在循环过程中直接退出循环。

continue语句可以提前结束本轮循环(本轮循环continue之后的语句将不再执行),直接开始下一轮循环。

③命令行模式下,如果死循环了,Ctrl+C或直接关闭窗口。

22.dict
Python内置了字典:dict的支持dictionary,其他语言中也称为map,使用键-值key-value存储,具有极快的查找速度。

dictlist的区别?

③由于一个key只能对于一个value,所以,"长江后浪推前浪"

dict中长江后浪推前浪.png

④如果key不存在,dict就会报错 - KeyError

如果dict中没有该Key就会报错.png

⑤为了避免这种情况,就需要提前判断该key是否存在?

in操作符判断key是否存在.png dict自带的get方法判断.png

- 注意:返回None时,Python交互式命令行不显示结果。

⑥如何删除一个key?

pop(key)删除dict中的key和对应的value.png

⑦注意:dict内部存放的顺序和key放入的顺序是没有关系的。

⑧和list相比,dict有的特点:速度 & 内存

list的特点:

dictkey必须是不可变的对象。

23.set
①是什么?

②如何创建一个set

创建一个set.png

③如何往set中添加元素?

使用add()往set中添加元素.png

④如何删除set中的元素?

使用remove方法删除set中的元素.png

set可以看成数学意义上的无需和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。

两个set之前的交集并集.png

24.不可变对象
①是什么?

list是可变对象因为该对象调用自己的方法改变了对象本身.png 字符串是不可变对象.png

25.借助抽象,我们不用关系底层的具体计算过程,而直接在更高层次上思考问题(高级程序语言)。

26.导致TypeError错误的原因?
①调用函数时,传入的参数数量不对。

abs()只接收一个参数.png

27.max()函数可以接收任意多个参数,并返回最大的那个。

max()函数.png

28.数据类型转换
int() | float() | str() | bool()

int&float&bool&str.png

②函数名实际上就是指向函数对象的一个引用,完全可以把函数名赋给一个变量,相当于给这个函数起了个"别名"

函数名其实就是指向函数对象的一个引用.png

29.小结
①调用Python的函数,需要根据函数定义,传入正确的参数。

30.定义函数
①如果定义的函数中没有return语句,函数执行完毕后也会返回结果,只是结果是None

return None可以简写为return

from exercise1 import my_abs
//1.注意文件exercise1不加后缀py
//2.从exercise1文件中引入my_abs这个函数
从哪个文件中导入哪个函数.png

④如果你想定义一个什么事也不做的空函数,可以用pass语句。

def nop():
    pass

⑤空函数有什么用?

31.参数检查
①自己定义的my_abs和内置的abs函数的区别?

内置abs函数和自定义的my_abs函数的区别.png

②完善以下my_abs函数

为自定义的函数添加参数检查.png

isinstance()怎么用的?

isinstance(object,classinfo) //用来判断一个对象是否是一个已知的类型
//object - 实例对象
//classinfo - 可以是直接或间接类名、基本类型或者它们组成的元组。
isinstance.png

注:type()isinstance()的区别?
type()不考虑继承。
isinstance()考虑继承。

isinstance继承而type不考虑继承.png

raise怎么用的?

32.小结
①定义函数时,需要确定函数名和参数个数。
②最好先对参数的数据类型做检查。
③函数体内部可以用return随时返回函数结果。
④函数执行完毕也没有return语句时,自动return None
⑤函数可以同时返回多个值,其实就是一个tuple

33.设置一个函数,求ax^2+bx+c = 0的解。
import math - math.sqrt

mathSqrt.png

②只有当a,b,c全部满足intfloat时,才进行下一步,否则异常。

if not isinstance(a,(int,float)) and isinstance(b,(int,float)) and 
   isinstance(c,(int,float)) //从右往左
//若满足以上条件
    raise TypeError("Bad operand Type!")

③当b*b-4*a*c >= 0

x1 = (-b + math.sqrt(b*b-4*a*c))/(2*a)
x2 = (-b - math.sqrt(b*b-4*a*c))/(2*a)
return x1,x2
//否则无解
else:
    print("无解")
上一篇下一篇

猜你喜欢

热点阅读