一、Python的标准数据类型
Python 3中主要有以下6中数据类型:
Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)
1.Python Number支持四种数值类型
var_int = 10 # 整型
# var_long = 51924361 # Python 3.x 去除了 long长类型
var_float = 0.1 # float浮点型
var_complex = 3.14j # complex复数
Python Number类型转换
int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
str(x ) 将对象 x 转换为字符串
var_string = '10'
转化为10进制数值类型
int_val = int(var_string, 10)
print(type(int_val)) # 打印 <class 'int'>
字符串转化为浮点类型
float_val = float(var_string)
print(type(float_val)) # 打印<class 'float'>
数值类型转化为字符串类型
string_val = str(int_val)
print(type(string_val)) # 打印<class 'str'>
字符串转化为浮点类型
float_val = float(var_string)
print(type(float_val)) # 打印<class 'float'>
2.Python String字符串
Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠(\)转义特殊字符
Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串
变量[头下标:尾下标]
str = 'Runoob'
print(str)
print(str[0]) # 输出字符串第一个字符
print(str * 2) # 输出字符串两次
print(str + "TEST") # 连接字符串
print('Ru\noob')# 转义 \n换行符
print(r'Ru\noob')# 添加一个r,表示原始字符串,不进行转义
3.Python List列表
列表是写在方括号([])之间、用逗号分隔开的元素列表。
列表截取:列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表
变量[头下标:尾下标]
list = ['abcd', 786, 2.33, 'runoob', 70.2]
tinylist = [123, 'runoob']
访问列表中的值
print(list)
print(list[0])
print(list[2:3]) # 索引下表从0开始,从下表2开始输出到下表3之间的元素(不包括下表3的元素), 打印[2.33]
print(list[2:]) # 打印[2.33, 'runoob', 70.2]
print(list + tinylist) # 连接列表
更新列表的元素
print("第四个元素为:" , list[3])
list[3] = 'Runoob'
print("更新后的第四个元素为:", list[3])
删除列表的元素 del
list_del = ['Google', 'Runoob', 1997, 2000]
print(list_del)
del list_del[2]
print("删除第三个元素",list_del) # 打印 ['Google', 'Runoob', 2000]
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
print(len(list_del)) # 输出列表的长度
print('Runoob' in list_del) # 元素是否存在于列表中
for x in list_del:
print(x) # 遍历列表元素
嵌套列表
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3, 4]
x = [a, b]
print(x[0]) # 输出第一个元素,打印 ['a', 'b', 'c', 'd']
print(x[1]) # 输出第二个元素,打印 [1, 2, 3, 4]
print(x[0][1]) # 输出第一个元素的第二个元素,打印 b
4.Python Tuple元祖
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
tup1 = ('Google', 'Runoob', 1977, 2000)
tup2 =() # 创建空元祖
tup3 =(50,) #元祖只包含一个元素
元祖内置函数
tuple(seq) # 将列表转换为元组
5.Python Dictionary 字典
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(dict['Name']) #查询字典
dict['Name'] = 'Google' # 修改字典元素
print(dict['Name'])
del dict['Class'] # 删除字典元素
del dict # 删除字典
dict.clear() # 删除字典
二、Python流程控制语句
Python循环语句for和while
while循环
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为:%d" % (n, sum)) # 输出 1 到 100 之和为: 5050
while...else,在条件语句为false时之行else语句块
count = 0
while count < 5:
print(count, "小于 5")
count = count + 1
else:
print(count, " 大于或等于5")
for循环
languages = ['C', 'C++', 'Perl', 'Python']
可以遍历任何序列的项目,如一个列表
for x in languages:
print(x)
# 通过序列索引迭代
for index in (len(languages):
print(languages[index])
range(start, stop[, step]) 函数,start表示起始值,stop表示最大值,step表示步长(默认1)
for i in range(5):
print(i) # 打印:0,1,2,3,4
使用内置enumerate函数进行遍历
sequence = ['C', 'C++', 'Perl', 'Python']
for key, value in enumerate(sequence):
print("key:%s,value:%s" % (key, value))
continue和break
continue语句跳出本次循环,而break语句跳出整个循环。
for index in range(len(languages)):
if languages[index] == 'C++':
continue; # 跳出本次循环,不打印C++
elif languages[index] == 'Python':
break; # 跳出整个循环
print(languages[index])
三、Python的数据结构与遍历
1.列表
append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来将列表当做堆栈使用
stack = [3, 4, 5]
stack.append(6)
stack.append(7)
print(stack) # 打印[3, 4, 5, 6, 7]
stack.pop()
print(stack) # 打印[3, 4, 5, 6]
print(stack.pop()) # 打印6
stack.pop()
print(stack) # 打印[3,4]
将列表当做队列使用
from collections import deque
queue = deque(["Eric", "John", "Micheal"])
queue.append("Terry") # Terry加入队列
queue.append("Graham") # Graham加入队列
queue.popleft() # 队列第一个人(Eric)先离开
queue.popleft() # 队列第二个人(John)离开
print(queue) # 打印deque(['Micheal', 'Terry', 'Graham'])
2.集合
集合是一个无序不重复元素的集。可以用大括号({})创建集合。注意:如果要创建一个空集合,必须用 set() 而不是 {} ;后者创建一个空的Dict字典
# 集合
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # 打印 {'banana', 'pear', 'orange', 'apple'} 多次打印集合,可见元素是无序不重复的
print('orange' in basket) # 打印 True
print('pipapple' in basket) # 打印 False
# 两个集合操作
a_set = set('abracadabra')
b_set = set('alacazam')
print(a_set) # 打印 {'r', 'a', 'b', 'd', 'c'}
print(a_set - b_set) # 打印 {'r', 'b', 'd'}
print(a_set | b_set) # 打印 {'b', 'd', 'a', 'l', 'm', 'c', 'z', 'r'}
print(a_set & b_set) # 打印 {'a', 'c'}
print(a_set ^ b_set) # 打印 {'b', 'd', 'l', 'z', 'm', 'r'}
3.字典
序列是以连续的整数为索引,与此不同的是,字典以关键字为索引,关键字可以是任意不可变类型,通常用字符串或数值。可以把字典理解为无序的键=>值对集合,
使用大括号{}创建空字典。
telphone_list = {'Eric':'18312491000', 'John':'18312491001','Micheal':'18312491002'}
telphone_list['Terry'] = '18312491003'
print(telphone_list) # 打印
print(telphone_list['Eric']) # 打印
del telphone_list['Micheal']
print(telphone_list) # 打印
sorted(telphone_list.keys()) # 打印
print('John' in telphone_list) # 打印
可以使用构造函数dict()生成字典:
tel_phone_list2=dict(Eric=18312491000,John=18312491001,Micheal=18312491002)
print(tel_phone_list2) #打印 {'Micheal': 18312491002, 'John': 18312491001, 'Eric': 18312491000}
4.遍历
遍历序列:
tel_phone_name=['Eric', 'John', 'Miceal']
for index, value in enumerate(tel_phone_name):
print(index, value)
遍历字典:
tel_phone_list3 = {'Eric':183, 'John':184, 'Micheal':185}
for key, value in tel_phone_list3.items():
print(key, value) # 打印John 184 Micheal 185 Eirc 183
四、Python模块
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。
import 语句
#Filename:helloWorld.py
# 定义一个函数打印Hello world
def print_func():
print('Hello world!')
# 定义函数打印I am programming
def print_func1():
print('I am programming')
文件test.py引入helloWorld模块,并调用print_func函数.
import helloWorld
helloWorld.print_func() # 打印Hello world
from ... import ...语句
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中
from helloWorld import print_func
print_func()
# print_func1() # 报错,无法找到print_func1()函数
from ... import *语句
把一个模块的所有内容全都导入到当前的命名空间
from helloWorld import *
print_func()
print_func1()
__name__属性
每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入
#Filename:helloWorld.py
def main():
print('We are in %s' % __name__)
if __name__ == '__main__':
main()
else:
print('程序外部执行')
Python标准模块
Python 本身带着一些标准的模块库,例如操作系统接口os、字符串正则表达式re、数学math、日期和时间datetime、time等
五、Python文件操作
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
六、Python错误与异常处理
Python有两种错误很容易辨认:语法错误和异常。
语法错误:
Python 的语法错误或者称之为解析错误,是语法分析器指出对应的错误信息
for i in range(5)
print(i)
#语法错误:SyntaxError: invalid syntax
异常:
Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。
a = '8'
b = 2
print(a + b)
#异常:TypeError: Can't convert 'int' object to str implicitly
异常处理:
try:
a = '8'
b = 2
print(a + b)
except TypeError as e:
print(e)
except ValueError:
print('Could not convert data to an integer.')
except Exception as e:
print(e)
except:
print("Unexpected error:", sys.exc_info()[0])
raise # raise exception outside
else:
print('if no exception happen, do something')
finally:
print('executing finally clause')
except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组
except (RuntimeError, TypeError, NameError):
pass
预定义的清理行为:
with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理方法
with open("myfile.txt") as f:
for line in f:
print(line, end="")
#执行完毕后,文件是打开状态,及时执行过程中出现错误,文件对象f也会关闭。