Python之路(一)-python简介
一、python简介,python2.x与python3.x的区别
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。
python的执行过程, 代码编译得到字节码,字节码由虚拟机转换成机器码执行。相当于python,则c语言则是直接编译成机器码而交给cpu执行,所以在执行时间上来说,python的执行速度要略低于C语言。
python的执行过程如下:
python 2 和python3的区别:
python2.7作为python2和python3的过度版本在2010年发布后再没有特别大的更新,python3废弃了python2中一些重复的方法,使得在用法上有些差异。在日后的开发中将逐渐像3.x转移。
最重要的是python3.x默认的字符集就是unicode,所以在代码中可以直接用中文而不会出现乱码了
python2.x&python3.x区别示例:
1 #python2.x--print 2 print 'hello,world‘ 3 4 #python3.x--print 5 print('hello,world')
除法示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = 3/2 2 3 #python3.x的值为1.5 4 #python2.x的值为1
二、变量声明
变量的作用:在内存中保存的内容,用来代指某个地址的内容。
变量的赋值:
#!/usr/bin/env python # -*- coding:utf-8 -*- name1 = 'Leifeng' name2 = 'Liudehua' print name1 print name2
问题:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = 123 2 b = a 3 a = 456 4 5 6 问题:此时 a和b的值是多少? 7 答案:此时a = 456,b = 123
三、用户交互
python3.x中 没有raw_injput() 取代的是input()
示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #python3.x写法 2 name = input('Please input your name:') 3 4 #python2.x写法 5 name = raw_input('Please input your name:') 6 7 8 print('my name is %s!'%(name))
四、if条件判断
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 n = 30 4 times = 0 5 while times < 3: 6 luck_num = int(input('请输入你的幸运数字:')) 7 times+=1 8 if luck_num > n: 9 print('你输入的数字太大!!!') 10 elif luck_num < n: 11 print('你输入的数字太小!!!') 12 else: 13 print('Bingo!!!') 14 break 15 else: 16 print('你尝试的次数太多!!')
五、while循环
1 lucky_num = -1 2 num = 10 3 times = 3 4 while lucky_num != num: 5 if times > 0: 6 lucky_num = int(input('请输入你的幸运数字:')) 7 times-=1 8 if lucky_num > num: 9 print('你输入的数字太大!!!你还有%s次机会' %times) 10 elif lucky_num < num: 11 print('你输入的数字太小!!!你还有%s次机会' %times) 12 else: 13 print('你的输入次数超过三次,程序退出!') 14 break 15 else: 16 print ('Bingo!!!')
六、for循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 nu = 19 2 for times in range(3): 3 lucky_nu = int(input('输入您的幸运数字:')) 4 5 if lucky_nu > nu: 6 print('too big') 7 elif lucky_nu < nu: 8 print('too small') 9 else: 10 print('binggo') 11 break 12 else: 13 print('too many times ')
七、初识数据类型
- 数字
整型(INT),长整型(LONG),浮点型(FLOAT)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
a = -9889 #求绝对值 print(a.__abs__()) print(abs(a)) #求二进制 print(bin(a)) #占用的字节数 print(a.bit_length()) #求加法 print(a.__add__(100)) print(a+100) #布尔值 print(a.__bool__()) total = 90 per = 10 #求商和余数 c = total.__divmod__(per) #除数换位 c = total.__rdivmod__(per) print(c) #比较是否相等 d = a.__eq__(-9889) print(d) #转换成float类型 e = a.__float__() print(e) #地板除 f = a.__floor__() print(f)
- 字符串
字符串功能: 移除空白,分割,长度,索引,切片
字符串使用:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 name = 'Eric' 5 age = 20 6 weight = 54.6 7 8 print('%s is %d years old,and his weight is %f' %(name,age,weight)) 9 10 其中 %s 表示字符串 11 %d表示整数 12 %f表示浮点
字符串方法:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
name = str('zhaojianbo') #查看数据类型 print(type(name)) #查看类的所有成员 print(dir(name)) #包含等于in print(name.__contains__('zhao')) print('zhao' in name) #字符串的格式化 #? # #首字母大写 print(name.capitalize()) #首字母小写 names = 'Eric' print(names.casefold()) #全部变小写 name2 = 'ZHAOJIANBO' print(name2) print(name2.lower()) #全部变大写 name3 = 'hello' print(name3.upper()) #大小写互换 a = 'abcdeabcdZXVSDFSDFSD' b = a.swapcase() print(b) #字符串居中,并填充字符 print(name.center(100,'*')) #统计某个字符串现的次数 print(name.count('o',0,10)) #解码 names = '赵建波' names = names.encode('gbk') print(names) #以字符串开头或者结尾 print(name.startswith('zhao',0,4)) print(name.endswith('bo')) #table转换成空格,可以设置多少个空格 names4 = 'zhao\tjianbo\tbo' result = names4.expandtabs(20) print(names4) print(result) #查找字符串是否存在,支持start,end,0为存在,-1为没找到 print(name.find('zhaos')) #index如果不存在会报错 print(name.index('zhao')) #字符串格式化 name = '{0} is big city' result = name.format('Beijing') print(result) name = '{city} is a big city!' result = name.format(city='Beijing') print(result) #判断is i = ' ' print(i.isspace()) #join li = ['a','l','e'] result = '*'.join(li) print(result) #去掉左右边的空格 #对应表替换maketrans translate a = 'abcde' b = '12345' #字符串分割 a = 'abcde' b = a.partition('cd') print(b) #替换replace,可以设置转换前几个 a = 'abcdeabcd' b = a.replace('b','f',1) print(b) # 分割字符串split a = 'abcdeabcd' b = a.split('b') print(b) #按行分割 a = '''abcdeabcd sfadsfa adfadsfad 11111''' b = a.splitlines() print(b)
- 布尔值
1或0,True或False
- 列表
列表功能:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 5 6 #创建列表 7 name_list = ['liu','li','wang','zhang','zhao'] 8 9 #索引 10 print name_list[1] 11 12 #切片 13 print name_list[0:4] 14 print name_list[3:] 15 16 #追加 17 name_list.append('qian') 18 print name_list 19 20 #删除 21 #默认删除最后一个元素 22 name_list.pop() 23 print name_list 24 25 # 也可以指定元素 索引删除 26 name_list.pop(1) 27 print name_list 28 29 #根据元素名字删除 30 name_list.remove('wang') 31 print name_list 32 33 34 #循环 35 for i in name_list: 36 print i 37 #包含 38 print('liu' in name_list) #结果为True或False 39 40 41 42 #计数,计算某元素在列表里出现的次数 43 print name_list.count('liu') 44 45 46 47 #插入 在指定索引位置插入元素 48 name_list.insert(2,'feng') 49 print(name_list) 50 51 # 查看某各元素所在下标是多少 52 print name_list.index('zhang') 53 54 #合并,将两个列表合并 55 name_list2 = [1,23,4,5,67] 56 name_list.extend(name_list2) 57 print name_list 58 59 #排序 60 name_list.sort() 61 print name_list 62 63 #反转 64 print name_list 65 name_list.reverse() 66 print(name_list)
- 元祖
元祖跟列表唯一区别就是元祖不可修改,因此元祖只有跟列表一样读取的功能,所有列表里修改内容的功能元祖都没有。
元祖和列表之间可以互相转换
1 #创建列表 2 name_list = ['liu','li','wang','zhang','zhao'] 3 #创建元祖 4 name_tuple = ('liu','li','wang','zhang','zhao') 5 6 #列表转元祖 7 print tuple(name_list) 8 #元祖转列表 9 print list(name_tuple)
- 字典
八、运算符
- 算术运算符
- 比较运算符
- 赋值运算符
- 位运算符
- 逻辑运算符
- 成员运算符
- 身份运算符
九、字符编码
十、打开文件
- r,以只读方式打开文件
- w,打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
- a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
- w+,打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 f = file('day1.txt','r') 2 3 #一次性加载所有内容到内存中 4 print f.read() 5 6 #一次性加载所有内容到内存,并根据行分割成字符串 7 print f.readlines() 8 9 # 每次仅读取一行数据 10 for line in f: 11 print line 12 13 #关闭句柄 14 f.close()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 f = file('day1.txt','w') 5 6 #覆盖内容 7 f.write('写入的新内容') 8 f.close() 9 10 11 12 13 #追加内容 14 f.write('追加的新内容') 15 f.close()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #此方法无须手动关闭句柄 2 with open('log.txt','r') as f: 3 print f.readline()
十一、