参考资料:
http://www.runoob.com/python/python-tutorial.html
http://www.runoob.com/python3/python3-tutorial.html
语法
标识符
标识符由字母、数字、下划线组成,但不能以数字开头。
标识符是区分大小写的。
行和缩进
学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
多行语句
可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
1
2
3
4
total = item_one + \
item_two + \
item_three
注释
单行注释采用 # 开头
多行注释使用三个单引号(‘’‘)或三个双引号(“””)。
等待用户输入
下面的程序在按回车键后就会等待用户输入:
1
input("\n\nPress the enter key to exit.")
代码组
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
1
2
3
4
5
6
if expression :
suite
elif expression :
suite
else :
suite
变量类型
Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
标准数据类型
Python有五个标准的数据类型:
1
2
3
4
5
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
数字
数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number对象就会被创建:
1
2
var1 = 1
var2 = 10
您也可以使用del语句删除一些对象引用。
1
2
del var
del var_a, var_b
Python支持四种不同的数值类型:
1
2
3
4
int(有符号整型) 10
long(长整型[也可以代表八进制和十六进制]) 51924361L
float(浮点型) 0.0
complex(复数) 3.14j
字符串
1
2
3
4
5
6
7
8
str = 'Hello World!'
print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第五个之间的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
以上实例输出结果:
1
2
3
4
5
6
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
列表
列表用[ ]标识, 可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
1
2
3
4
5
6
7
8
9
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print (list) # 输出完整列表
print (list[0]) # 输出列表的第一个元素
print (list[1:3]) # 输出第二个至第三个的元素
print (list[2:]) # 输出从第三个开始至列表末尾的所有元素
print (tinylist * 2) # 输出列表两次
print (list + tinylist) # 打印组合的列表
以上实例输出结果:
1
2
3
4
5
6
['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
元组
元组是另一个数据类型,类似于List(列表)。
元组用”()”标识。内部元素用逗号隔开。但是元素不能二次赋值,相当于只读列表。
元字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用”{ }”标识。字典由索引(key)和它对应的值value组成。
1
2
3
4
5
6
7
8
9
10
11
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print (dict['one']) # 输出键为'one' 的值
print (dict[2]) # 输出键为 2 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
输出结果为:
1
2
3
4
5
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
运算符
% 取模 - 返回除法的余数
** 幂 - 返回x的y次幂
// 取整除 - 返回商的整数部分
逻辑运算符
and 布尔”与” - 如果x为False,x and y返回False,否则它返回y的计算值。
or 布尔”或” - 如果x是True,它返回True,否则它返回y的计算值。
not 布尔”非” - 如果x为True,返回False。如果x为False,它返回True。
成员运算符
in 如果在指定的序列中找到值返回True,否则返回False。
not in 如果在指定的序列中没有找到值返回True,否则返回False。
1
2
3
4
5
6
7
8
9
10
11
12
13
a = 2
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print ("Line 1 - a is available in the given list")
else:
print ("Line 1 - a is not available in the given list")
if ( b not in list ):
print ("Line 2 - b is not available in the given list")
else:
print ("Line 2 - b is available in the given list")
身份运算符
is
is是判断两个标识符是不是引用自一个对象
is not
is not是判断两个标识符是不是引用自不同对象
条件语句
1
2
3
4
5
6
7
8
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
While循环语句
1
2
3
4
5
6
7
8
9
10
11
12
13
i = 1
while i < 10:
i += 1
if i%2 > 0: # 非双数时跳过输出
continue
print (i) # 输出双数2、4、6、8、10
i = 1
while 1: # 循环条件为1必定成立
print (i) # 输出1~10
i += 1
if i > 10: # 当i大于10时跳出循环
break
循环使用 else 语句
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
1
2
3
4
5
6
count = 0
while count < 5:
print (count, " is less than 5")
count = count + 1
else:
print (count, " is not less than 5")
for 循环语句
1
2
3
4
5
6
7
8
9
10
11
for letter in 'Python': # 第一个实例
print ('当前字母 :', letter)
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print ('当前字母 :', fruit)
for index in range(len(fruits)):
print ('当前水果 :', fruits[index])
print "Good bye!"
数字
数学函数
函数 | 返回值 | |||
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 | |||
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 | |||
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 | |||
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 | |||
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 | |||
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 | |||
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 | |||
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 | |||
max(x1, x2,…) | 返回给定参数的最大值,参数可以为序列。 | |||
min(x1, x2,…) | 返回给定参数的最小值,参数可以为序列。 | |||
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 | |||
pow(x, y) | x**y 运算后的值。 | |||
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 | |||
sqrt(x) | 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j |
随机数函数
函数 | 描述 | |||
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 | |||
randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 | |||
random() | 随机生成下一个实数,它在[0,1)范围内。 | |||
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 | |||
shuffle(lst) | 将序列的所有元素随机排序 | |||
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
字符串
访问字符串中的值
Python不支持单字符类型,单字符也在Python也是作为一个字符串使用。
Python访问子字符串,可以使用方括号来截取字符串,如下实例:
1
2
3
4
5
var1 = 'Hello World!'
var2 = "Python Programming"
print (var1[0])
print (var2[1:5])
运算符
操作符 | 描述 | |||
+ | 字符串连接 | |||
* | 重复输出字符串 | |||
[] | 通过索引获取字符串中字符 | |||
[ : ] | 截取字符串中的一部分 | |||
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | |||
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | |||
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母”r”(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | |||
% | 格式字符串 |
格式化
1
print ("My name is %s and weight is %d kg!" % ('Zara', 21) )
以上实例输出结果:
1
My name is Zara and weight is 21 kg!
三引号
python中三引号可以将复杂的字符串进行复制:
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。
内建函数
方法 | 描述 | |||
string.capitalize() | 把字符串的第一个字符大写 | |||
string.center(width) | 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 | |||
string.count(str, beg=0, end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 | |||
string.endswith(obj, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. | |||
tring.expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,默认的空格数 tabsize 是 8. | |||
string.find(str, beg=0, end=len(string)) | 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 | |||
string.index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在 string中会报一个异常. | |||
string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False | |||
string.isalpha() | 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False | |||
string.isdecimal() | 如果 string 只包含十进制数字则返回 True 否则返回 False. | |||
string.isdigit() | 如果 string 只包含数字则返回 True 否则返回 False. | |||
string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False | |||
string.isnumeric() | 如果 string 中只包含数字字符,则返回 True,否则返回 False | |||
string.isspace() | 如果 string 中只包含空格,则返回 True,否则返回 False. | |||
string.istitle() | 如果 string 是标题化的(见 title())则返回 True,否则返回 False | |||
string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False | |||
string.join(seq) | Merges (concatenates)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 | |||
string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 | |||
string.lower() | 转换 string 中所有大写字符为小写. | |||
string.lstrip() | 截掉 string 左边的空格 | |||
max(str) | 返回字符串 str 中最大的字母。 | |||
min(str) | 返回字符串 str 中最小的字母。 | |||
string.partition(str) | 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. | |||
string.replace(str1, str2, num=string.count(str1)) | 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次. | |||
string.rfind(str, beg=0,end=len(string) ) | 类似于 find()函数,不过是从右边开始查找. | |||
string.rindex( str, beg=0,end=len(string)) | 类似于 index(),不过是从右边开始. | |||
string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 | |||
string.rpartition(str) | 类似于 partition()函数,不过是从右边开始查找. | |||
string.rstrip() | 删除 string 字符串末尾的空格. | |||
string.split(str=””, num=string.count(str)) | 以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串 | |||
string.splitlines(num=string.count(‘\n’)) | 按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行. | |||
string.startswith(obj, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查. | |||
string.strip([obj]) | 在 string 上执行 lstrip()和 rstrip() | |||
string.swapcase() | 翻转 string 中的大小写 | |||
string.title() | 返回”标题化”的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) | |||
string.translate(str, del=””) | 根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中 | |||
string.upper() | 转换 string 中的小写字母为大写 | |||
string.zfill(width) | 返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0 | |||
string.isdecimal() | isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。 |
列表(Lists)
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
删除列表元素
可以使用 del 语句来删除列表的的元素
脚本操作符
表达式 | 结果 | 描述 | ||||
len([1, 2, 3]) | 3 | 长度 | ||||
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 | ||||
[‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 重复 | ||||
3 in [1, 2, 3] | True | 元素是否存在于列表中 | ||||
for x in [1, 2, 3]: print x, | 1 2 3 | 迭代 |
函数&方法
cmp(list1, list2) | 比较两个列表的元素 | |||
len(list) | 列表元素个数 | |||
max(list) | 返回列表元素最大值 | |||
min(list) | 返回列表元素最小值 | |||
list(seq) | 将元组转换为列表 | |||
list.append(obj) | 在列表末尾添加新的对象 | |||
list.count(obj) | 统计某个元素在列表中出现的次数 | |||
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) | |||
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 | |||
list.insert(index, obj) | 将对象插入列表 | |||
list.pop(obj=list[-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 | |||
list.remove(obj) | 移除列表中某个值的第一个匹配项 | |||
list.reverse() | 反向列表中元素 | |||
list.sort([func]) | 对原列表进行排序 |
元祖
元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
字典
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
1
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
删除字典元素
1
2
3
4
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 删除键是'Name'的条目
dict.clear(); # 清空词典所有条目
del dict ; # 删除词典
1) 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2) 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
函数方法
cmp(dict1, dict2) | 比较两个字典元素。 | |||
len(dict) | 计算字典元素个数,即键的总数。 | |||
str(dict) | 输出字典可打印的字符串表示。 | |||
type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 | |||
radiansdict.clear() | 删除字典内所有元素 | |||
radiansdict.copy() | 返回一个字典的浅复制 | |||
radiansdict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 | |||
radiansdict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 | |||
radiansdict.has_key(key) | 如果键在字典dict里返回true,否则返回false | |||
radiansdict.items() | 以列表返回可遍历的(键, 值) 元组数组 | |||
radiansdict.keys() | 以列表返回一个字典所有的键 | |||
radiansdict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default | |||
radiansdict.update(dict2) | 把字典dict2的键/值对更新到dict里 | |||
radiansdict.values() | 以列表返回字典中的所有值 |