注释
以#开头的语句是注释
大小写敏感
约定
Python使用缩进来组织代码块,需要遵循预定俗称的习惯,坚持以4个空格作为缩进(避免Tab和空格混用,可以将编辑器的Tab设置为空格代替)
数据类型
整数(1、0xff00)、浮点数(1.23、1.3e-5)、字符串('abc',"abc",'I\'m \"OK\"!')、布尔值(True、False)、空值(None)
注:\是转移字符,当一个字符串有很多符号需要转义时可以使用r''表示''内部的字符不转义(其中不要有空格,单引号用双引号会报错),如果字符串中有很多换行,全部使用\n不方便阅读,还支持'''...'''表示多行内容(其中...用实际内容代替,可以换行输入),布尔值、空值的首字母必须大写,Python的整数没有大小限制,Python的浮点数也没有大小限制,但是一旦超过一定范围就直接表示为inf(无限大)。
>>> print('I\'m ok.') I'm ok. >>> print('I\'m learning\nPython.') I'm learning Python. >>> print('\\\n\\') \ \
>>> print('\\\t\\') \ \ >>> print(r'\\\t\\') \\\t\\
>>> print('''line1 ... line2 ... line3''') line1 line2 line3
变量
变量名必须是大小写英文、数字和_组合,且不能用数字开头,等号=是赋值语句。
变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言(定义变量时必须指定变量类型,如果赋值的时候类型不匹配会报错)
a = 'ABC' b = a a = 'XYZ' print(b)
最终打印的是ABC,应该刚开始创建'ABC'字符串,然后在内存新增a变量指向它,然后新建变量b也指向a变量指向的字符串'ABC',再然后创建'XYZ'字符串,只是将变量a指向它,b变量没变仍然指向'ABC'
常量
通常用全部大写的变量名表示常量,常量就是不能变的变量。常量的声明与变量类似,并没有严格的限制不让修改常量的值,只是约定不能变。
注:数字计算中除/的结果是浮点数(分子分母都为整数结果也是浮点数,整除了也是浮点数),//地板除就是整数相除取整数部分,%是整数相除取余数。
字符串和编码
Python3版本中,字符串是以Unicode编码的,Python提供ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。
Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就要把str变为以字节为单位的bytes,Python对bytes类型的数据用带b前缀的单引号或双引号表示(b'ABC'),以Unicode表示的str通过encode()方式可以编码为指定的bytes('中文'.encode('utf-8')),相对应的使用decode将bytes变为str(b'ABC'.decode('ascii')),计算str的长度使用len()函数(len('中文')),计算的是字符数。一个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占1个字节。
指定源代码文件使用UTF-8编码:
#!/usr/bin/env python3 (Linux/OS X表示这是一个Python可执行程序,windows忽略)
# -*- coding: utf-8 -*- (告诉Python解释器按照UTF-8编码)
声明并不意味文件就是UTF-8编码,保存文件时也要注意使用UTF-8编码存储。
格式化字符串
在Python中,采用的格式化方式和C语言是一致的,用%实现
>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
%运算符就是用来格式化字符串的,在字符串内部,%s表示用字符串替换,%d表示用整数替换,%f表示浮点数替换,%x表示十六进制整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好,如果只有一个%?,括号可以省略,其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
>>> '%2d-%02d' % (3, 1) ' 3-01' >>> '%.2f' % 3.1415926 '3.14'
如果不确定用什么,%s永远起作用,它会把任何数据类型转换为字符串:
>>> 'Age: %s. Gender: %s' % (25, True) 'Age: 25. Gender: True'
如果字符串中%是一个普通字符,用%%来表示一个%
list和tuple
list是一种有序的集合,可以随时添加和删除其中的元素。
>>> classmates = ['Michael', 'Bob', 'Tracy']
len()函数获得list元素的个数(len(classmates)),list中元素的索引是从0开始(classmates[0]),len(classmates)-1和-1作为索引均表示获取最后一个元素,list追加元素到末尾使用append()函数(classmates.append('Adam')),在指定索引位置插入元素使用insert()函数(classmates.insert(1,'Jack')),删除末尾元素使用pop()(classmates.pop()),删除指定索引的元素使用pop(i),把某个元素替换成别的元素,直接重新赋值即可(classmates[1]='Sarah'),list中各元素的类型可以不同,元素可以是list,相当于多维度(classmates[1][2])
tuple和list非常类似,但是tuple一旦初始化就不能再修改
>>> classmates = ('Michael', 'Bob', 'Tracy')
如果定义一个空的tuple可以使用(),如果只有一个元素不能使用(1),需要使用(1,),其中逗号(,)为了消除歧义,因为(1)会被认为是1,tuple的元素可以是list
条件和判断
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
if语句的执行特点是从上往下,如果上面的条件已经满足,下面的将不再执行。
注:input()函数交互获取的输入数据为字符串,如果输入纯数字字符可以使用int(str)函数转换成整数。
循环
循环有for循环和while循环
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
整数序列可以使用range()函数生成,range(101)就是表示从0-100的整数序列
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
注意缩进表示语句块,四个空格缩进的约束也要牢记。
dict和set
dict相当于键值对的存储,查找快,占用空间大(以空间占用时间的存储方式,list占用空间小查找慢)
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Bob']进行查找调用,如果key不存在会报错,可以使用in判断key是否存在
>>> 'Thomas' in d
False
也可以使用get方法,不存在返回None(空值),空值在交互模式下不显示结果,可以设置缺省值
>>> d.get('Thomas')
>>> d.get('Thomas', -1) -1
使用pop(key)删除对应的value,dict内部存放的顺序和key放入的顺序没有关系
dict中的key必须是不可变对象,所以key不能是一个list,并且key具有唯一性
set和dict类似是一组key的集合,并且不存储value,要创建一个set需要一个list输入集合
>>> s = set([1, 2, 3])
重复的元素在set中会被自动过滤,add(key)添加元素到set中,可以重复添加但不会有效果,remove(key)可以删除元素,两个set可以做交集(&)和并集(|)的操作
不可变对象
对于可变对象,比如list,对list进行操作,list内部的内容是会变化的
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
而不可变对象,比如str
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
//TODO:下一期将学习函数,过几天在继续学习