学廖雪峰老师的python教程笔记。
1、变量类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言。
2、理解变量在计算机内存中的表示也非常重要。当我们写:
a ='ABC'时,Python解释器干了两件事情:
(1)在内存中创建了一个'ABC'的字符串;
(2)在内存中创建了一个名为a的变量,并把它指向'ABC'。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:
a = 'ABC'
b = a
a = 'XYZ'
print(b)
Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
对变量赋值x = y是把变量x指向真正的对象,该对象是变量y所指向的。随后对变量y的赋值不影响变量x的指向。
3、字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。编码成bytes传输。
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。 最早是127个 ASCII码,包含字母数字特殊符号,一个字节表示一个字符。中国制定GB2312
统一的Unicode标准,但最常用的是用两个字节表示一个字符,存储空间多一倍,所以出现把Unicode编码转化为“可变长编码”的UTF-8编码,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节。
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。
Python 3版本中,字符串是以Unicode编码的,so print(‘也可以有中文’)
当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。
由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。
以Unicode表示的str通过encode()方法可以编码为指定的bytes
>>> '中文'.encode('utf-8') # .decode #
b'\xe4\xb8\xad\xe6\x96\x87'
# -*- coding: utf-8 -*-
4、格式化字符输出 变量每次是变得 例如银行系统 每次输出你的金额是多少是变化的 ,%s,%f,%d,%x(十六进制整数),还可限制浮点数的位数。如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串,还可用布尔值。
>>> 'Hello, %s'%'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.'% ('Michael',1000000) #顺序对好,
'Hi, Michael, you have $1000000.'
print('%2d-%02d' % (3, 1))
3-01 #02表示补几个零# 一般运算符前后加空格
字符串里有%,用%%来转移表示%
>>> 'growth rate: %d %%'%7
'growth rate: 7 %'
(2)用 .format
5、list
list是一种有序的集合,可以随时添加和删除其中的元素
classmates = ['Michael','Bob','Tracy']
classmate[0]表示第一个,不能越界
classmate[-1]表示最后一个
classmates.append('Adam') 添加到末尾
classmates.insert(1,'Jack') 添加到指定位置
classmates.pop() 删除末尾
classmates.pop(1) 删除指定位置
classmates[1] ='Sarah' 直接赋值改变列表数值
ist里面的元素的数据类型也可以不同,list元素也可以是另一个list,s[2][1]读取list中list的元素
L = [] 建立一个空列表
6、tuple。元组,tuple中每个元素指向不可变,无法用append那样修改。
tup1 = ('Google', 'Runoob', 1997, 2000)
建立有一个元素的turpe, t=(1, ) 加一个逗号
若tuple中元素包含list,那个通过赋值改变List中元素,也能改变tuple元素。但tuple始终指向这个list,不能改成指向其他对象。
7、条件判断(注意冒号和缩进语句)
if<条件判断1>:
<执行1>
elif<条件判断2>:
<执行2>
elif<条件判断3>:
<执行3>
else:
<执行4>
注意:if x:
print('True') 若x为非空,非零,则true
![](https://img.haomeiwen.com/i15112047/7153d6cbbe84b330.png)
input输入的是字符串类型,无法与下面int型直接比较,必须先转换类型。
8、循环
for.....in....循环,依次把list或tuple中的每个元素迭代出来,把每个元素代入变量x,然后执行缩进块的语句。
names = ['Michael','Bob','Tracy']
for name in names:
print(name)
start: 计数从 start 开始。默认是从 0 开始。
例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。
例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
>>> list(range(5))
[0, 1, 2, 3, 4] 生成list
(2)while循环,只要条件满足,就不断循环,条件不满足时退出循环
![](https://img.haomeiwen.com/i15112047/3debdbece229d793.png)
(3)break 与 if连用 提前结束当前while循环
(4)与if连用,continue的作用是提前结束本轮循环,跳过该循环后续语句运行,直接开始下一轮循环
网友评论