Python基础入门笔记
时间:2018年9月4日 22:54:49 #请各位读者注意时效性 以下Python学习笔记基于Python3 2018年9月11日 22:57:37更新
懒得改格式了,将就一下
Python学习笔记
1.Python源于1989年圣诞期间,作者:Guido van Rossum
2.任何语言都有缺点,Python也不例外。如:运行速度慢、代码不能加密
3.优点:可以跨平台。
4.命令行写Python好处是可以直接得到结果,坏处是没办法保存。文本编辑器写代码可以保存。
5.print()是输出方法,如果是输出字符串需要添加引号'',遇到逗号(,)会空格一行。
6.input()是输入方法,它会把用户输入的东西变成字符串,并存放到一个变量里。括号里的东西能让用户看到提示。
7.Python的语法比较简单,采用缩进方式。不像传统的语言有中括号。
8.注释用#符号,注释是给人看的,可以是任意内容,解释器会忽略掉注释。
9.数据类型:整数、浮点数、字符串、布尔值、列表、字典等。
10.转义字符:\
11.布尔值可以用and、or或not运算。
12.变量名必须是大小写英文、数字和_的组合,且不能用数字开头。
13.变量本身类型不固定的语言称之为动态语言,固定类型的称之静态语言,常量是一个不能变的变量。
14.ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。
15.len()函数计算的是str的字符数。
16.在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:(%d整数 %s字符串 %f浮点型)
s = 100
print('get %d' %s)
get 100
补充:如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。如果要输出'%'字符,可用%%代替
17.练习:小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位。示例:
s1 = 72
s2 = 85
s3 = (s2-s1)/72*100
print('%.1f%%' %s3) #输出为18.1%
18.编码
ASCII编码是一个字节,不能编码中文;
Unicode编码是两个字节,可以编码多数语言,但是占据大量空间;
UTF-8可以编码多数语言且节约空间,汉字一般是3个字节
19.编码转换方法
ord()函数获取字符的整数表示
chr()函数把编码转化为对应的字符
\u十六进制写字符串str,如\u4e2d
20.str转bytes
str转字节bytes用encode()方法,括号内是指定的字符编码类型。纯英文可以用ASCII编码为bytes,含有中文额str用UTF-8编码为bytes,由于中文编码范围超出了ASCII编码的范围python会报错。
21.bytes转str
bytes转str用decode()方法,括号内是制定字符编码类型。如果无法解码,python会报错。
22.排序练习:
a = [5,6,3,2,4,1]
b = a
print(a)
count = len(b)
for i in range(0,count):
for j in range(i+1,count):
if b[i]<b[j]:
b[i],b[j]=b[j],b[i]
print(b)
23.按照约定俗成的管理,以4个空格键为缩进。
24.整数:十六进制用of前缀和0-9,a-f表示。十进制与数学上的写法一样
25.浮点数:就是小数点会变化,浮点数可以用数学写法,对于很大或者很小的浮点数一般用科学技术法,用e代替10,整数运算是准确的,浮点数会四舍五入导致误差。
26.字符串:’或者”括起来的任意文本,其中’’””不是字符串的部分,如果涉及到字符串中有双意时候,为避免冲突,要使用转义字符\
27.换行:\n 表示换行
‘’’…’’’可以表示多行内容,其中…不用输入,输入’’’和字符串回车键python会自动生成,是由提示符>>>转化的,不是代码的一部分。
28.布尔值:即是True或者Flase,其中Ture的T和Flase的F必须大写,要注意啦。
29.空值用None表示,是一个没有意义的值。这里我理解为链表或变量中的空值。类比scratch中变量或链表某一项值为空。
30.当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(classmates) - 1。如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素。例子:
a = ['a','b','c','e']
print(a[-1]) #以此类推,可以获取倒数第2个、倒数第3个
31.list是一个可变的有序表,所以,可以往list中追加元素到末尾。例子:
a = ['a','b','c','e']
a.append('f')
print(a)
32.可以把元素插入到指定的位置,比如索引号为1的位置。例子:
a = ['a','b','c','e']
a.insert(1,'f')
print(a)
33.要删除list末尾的元素,用pop()方法;要删除指定位置的元素,用pop(i)方法,其中i是索引位置。例子:
a = ['a','b','c','e']
a.pop()
print(a)
a.pop(1)
print(a)
34.要把某个元素替换成别的元素,可以直接赋值给对应的索引位置。
35.list里面的元素的数据类型也可以不同,list元素也可以是另一个list。(注意,list里面的list属于一个元素)
36.另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。tuple使用()存储数据,例如:
a = (1,2,3,4)
37.如果要定义一个空的tuple,可以写成():
t = ()
t
()
但是,要定义一个只有1个元素的tuple,如果你这么定义:
t = (1)
t
1
定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
t = (1,)
t
(1,)
38.“可变的”tuple,某种情况下,可使tuple产生变化,如:
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
t
('a', 'b', ['X', 'Y'])
39.表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
40.计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。
41.根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。
42.也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行了。例子:
a = 3
if a >= 18: #注意不要少写了冒号
print('a大于18')
else:
print('a小于18')
43.elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
44.if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else。
45.if判断条件还可以简写,比如写:
if x: #只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。
print('True')
46.input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数。Python提供了int()函数来完成这件事情。例如:
s = input('birth: ')
birth = int(s)
if birth < 2000:
print('00前')
else:
print('00后')
47.练习:小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
用if-elif判断并打印结果
代码:
h = 1.75
w = 80.5
BMI =(w/h)*(w/h)
if BMI >32:
print('严重肥胖')
elif BMI >27:
print('肥胖')
elif BMI >24:
print('过重')
elif BMI >27:
print('正常')
else:
print('过轻')
48.Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来;第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。
49.for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。
50.range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(100)生成的序列是从0开始小于100的整数.
51.while循环的基本格式:
while 条件: #无限循环使用 True
52.练习:请利用循环依次对list中的每个名字打印出Hello, xxx!:
username = ['zhang','chen','li','wang']
for a in username:
print('Hello,'a'!\n')
53.在循环中,break语句可以提前退出循环。(完全跳出循环)
54.在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。(仅仅跳出本次循环,还是要执行下次循环)比如:我们想只打印奇数
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
55.有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。
56.循环是让计算机做重复任务的有效的方法。break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
57.要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句,都可以通过改写循环条件或者修改循环逻辑,去掉break和continue语句。
58.死循环例子:
i = 1
while True:
print(i)
i = i+1
59.字典:dict,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。例如:
a = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
60.字典:dict,除了初始化时指定外,还可以通过key放入,例如:
a['Keith']=100
61.字典:dict中,由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉.如果key不存在,dict就会报错.
62.要避免key不存在的错误,有两种办法,一是通过in判断key是否存在;二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value。例子:
'Thomas' in a #使用in判断key是否存在
d.get('Thomas') #get方法 注意:返回None的时候Python的交互环境不显示结果。
d.get('Thomas', -1)
63.要删除一个key,用pop(key)方法,对应的value也会从dict中删除。请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。
64.dict特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
list特点:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
65.set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。重复元素在set中会自动被过滤。
66.通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果。
67.通过remove(key)方法可以删除元素
68.set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。
69.使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。
未完待续。。。(一周一更)