数据类型和变量
1. Bool和False
- Python程序是大小写敏感的,如果写错了大小写,程序会报错。
- 如果需要打印出./之类数据,需要使用转义字符
- 如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用”’…”’的格式表示多行内容
- 在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来
Python是一种 动态语言,和传统的C++和JAVA(静态语言)不同,a = ‘ABC’时,Python解释器干了两件事情:
- 在内存中创建了一个’ABC’的字符串;
- 在内存中创建了一个名为a的变量,并把它指向’ABC’。
另外Python中/表示普通的除法,//表示地板除法。列如,10/3=3.33333,10//3=3
2. 字符串
字符编码,ASCII编码是最初的编码的,但是后来由于ASCII编码表示的数字有限,那么使用扩展的Unicode编码,但是后来有本着节约的思想,出现了UTF-8编码;
主要是利用UTF-8是变长码,他是使用较少的码长,所以传输的时候可以大大节约传输的成本
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65>>> ord('中')
20013>>> chr(66)
'B'>>> chr(25991)
'文'
这里写代码片在python中字符串(str)使用unicode编码的,这也就是表示可能一个字符串需要多个字节表示,但是如果我们需要在网络上传输,我们需要使用byte作为传输,也就是把str类型的数据转换成byte类型的。
若想把str类型的数据转换成byte类,可以使用encode()函数。反之,如果想把byte数据变成str数据,需要使用decode()函数
·>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'ABC'.decode('ascii')
'ABC'>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码
格式化输出:
有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:
>>> 'growth rate: %d %%' % 7'growth rate: 7 %'
3. List和Tuple
3.1 List(列表)相关操作
可以随时添加或者删除元素,(动态),使用中括号[]包含数据
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
相关操作
- 可以取List里面的元素个数,使用len()
- 注意List里面的元素下标是从0开始的,越界会出现IndexError;另外,可以通过classmates[-1]取最后一个元素,-2可以取倒数第二个,同理;
使用.append()函数可以在List最后加入元素,使用.insert(i,xxx)表示在索引为i的位置插入数据;使用.pop()函数表示删除最后一个元素,使用.pop(i)函数表示删除索引为i的元素;
List里面的元素是可以其他种类的元素。List是和数组类似的。可以利用numpy函数进行数组化操作。
3.2 Tuple(元组)相关操作
不可以随便添加或者删除元素,使用()包含数据
classmates = ('Michael', 'Bob', 'Tracy')
1.使用元组的原因就是为了数据的安全性,这样的话不可以随便更改或者删除数据
2.另外,如果想要产生一个元素的元组,可以这样写(1,)中间打一个逗号,防止和(1)仅仅表示一个元素产生二义性区别;
4. 条件判断
使用条件语句相关说明,增加代码的丰富性;
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
这里要千万注意一点,Python语言是非常注重缩进的一门语言,所以在编程的时候,需要注意缩进的问题;另外在这里的条件判断语句,我们别忘记了冒号:
Attention: 我们可以使用input()函数来帮助我们进入数据输入,比如a=input(‘bir:’),同时注意到这里的input之后的数据是str类型的,要小心一点;
5. 几种常见的循环结构:
5.1 for…in循环
for x in ...:
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: (这里的冒号不能忘掉了)
sum = sum + x (这里的意思是x依次取List中的元素)
print(sum)
注意:如果想要产生连续的List元素,可以使用range函数
list(range(5))
[0, 1, 2, 3, 4]
5.2 break&continue语句
break退出循环是退出当前的循环,而continue是退出本轮循环
n = 1
while n <= 100:
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环
print(n)
n = n + 1
print('END')
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
小结,break和continue语句都是可以退出当前循环的,但是break是退出循环的continue是退出当前循环;此外,break和continue通常是配合if语句进行使用的。
最后还要注意一点,continue和break语句通常不要使用太多,这样的话程序逻辑可能会比较混乱;
如果程序出现死机的情况,这时候我们可以使用crtl+c来终止程序;
6. 字典dict和set
6.1 dict字典操作
如果需要进行查找的话可以进行建立一个键值对进行操作,这样的话可以,这种操作相当于是字典一样进行查找
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
字典的操作是可以直接取里面的值,然后直接可以给他赋值操作,如果进行多次重复的赋值操作,那么取最后一次进行冲掉。另外字典可以进行查找操作,如果查找的的东西在字典中没有的话,那么返回一个空的值。如果需要避免这种字典数字不存在的情况,那么可以通过in ,或者是get()函数来进行判断是否在这个字典里面。
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
Attention: 注意字典中key是不可变变量,如字符串,整数都是可以作为key的,但是List是可变变量,他是不能作为字典的Key,否则会出错的。
6.2 set操作
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。所以说set存放的数据是和dict的唯一区别就是他里面存放的没有value,仅仅只有key.
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
这里在补充一点:可变对象(List)他里面的内容是可以变化的,但是不可变对象(Str)里面的数据是不发生变化的。