数据类型和变量
0x表示十六进制
浮点数
1.23e2 表示123.0
1.2e-2 表示0.012
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差
字符串
\ 为转义字符
r'' 分好内部的字符串默认不转义
'''...''' 如果字符串内部有很多换行使用
.py文件这么写
print('''line1
line2
line3''')
也可以在'''...'''前面加上r使用 如
print(r'''hello,\n
world''')
布尔值
True、False
可以用and、or、not运算
空值 None
Python 是动态语言 如
a = 123
a = 'ABC'
常量
PI = 3.14159265359
>>> 10 / 3
3.3333333333333335
// 称为地板除,两个整数的除法仍然是整数
>>> 10 // 3
3
% 余数运算
>>> 10 % 3
1
Python的整数和浮点数没有大小限制,但是超出一定范围就直接表示为inf(无限大)
字符串
在最新的Python3中,字符串是以Unicode编码的,也就是说Python的字符串支持多语言
ord()函数获取字符的整数表示
>>> ord('a')
97
chr()函数把编码转换为对应的字符
>>> chr(97)
'a'
Python对bytes类型的数据用带b前缀的单引号或双引号表示
x = b'ABC'
bytes的每个你字符都只占用一个字节
通过encode()方法可以编码为指定的bytes
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
在bytes中,无法显示为ASCII字符的字节,用\x##显示。
用decode()方法变为str
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
要计算str包含多少个字符,可以用len()函数:
>>> len('ABC')
3
>>> len('中文'.encode('utf-8'))
6
py文件中加入# -*- coding: utf-8 -*-
表示按照UTF-8编码读取源代码
格式化
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'
format()
>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'
print('提升了{0:.2f} %'.format(r))
print('%d%%' % 3)
提升了13.00 %
3%
list
有序 可变
classmates = ['Michael', 'Bob', 'Tracy']
获取list的元素个数
len(classmates)
取出元素
classmates[0]
取出最后一个元素
classmates[-1]
倒第二个
classmates[-2]
追加
classmates.append('Adam')
插入
classmates.insert(1, 'Jack')
删除末尾的
classmates.pop()
删除指定的
classmates.pop(i)
替换
classmates[1] = 'Sarah'
元素类型可以不同
L = ['Apple', 123, True]
元素也可以是另外一个list
s = ['python', 'java', ['asp', 'php'], 'scheme']
s[2][1]
tuple
有序, 不可变
元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改
classmates = ('Michael', 'Bob', 'Tracy')
定义一个元素的时候
t = (1,)
条件判断
Python的if...elif...else很灵活。
age = 20
if age >= 18:
print('your age is', age)
print('adult')
your age is 20
adult
elif 是 else if缩写
if x:
print('True')
只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。
类型转换
int(s)
循环
break 和 continue和其他语言都一样
>>> list(range(5))
[0, 1, 2, 3, 4]
sum = 0
for x in range(101):
sum = sum + x
print(sum)
5050
L = ['Bart', 'Lisa', 'Adam']
for x in L:
print('Hello, %s' % x)
n = 0
while len(L) > n:
print('Hello, %s' % L[n])
n = n + 1
dict
无序
key必须是不可变的 tuple里包含list不行
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
添加
d['Adam'] = 67
判断key不存在的错误,有两种办法
1、in
'Thomas' in d
False
2、通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
d.get('Thomas')
返回None的时候Python的交互环境不显示结果
>>> d.get('Thomas', -1)
-1
删除
d.pop('Bob')
set
无value 无重复 无序
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
添加
s.add(4)
删除
s.remove(4)
交集并集
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
可变 不可变
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
替换
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'