目录:
python简介
python安装与执行
pycharm简单设置及使用
注释使用及.pyc文件
python变量
python用户交互(输入输出)
if条件语句
循环语句(while & for)
运算符
python数据类型初识(int,bool,str,list,dict)
文件读写初识
一、python简介:
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
python的目前应用领域:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域
python的目前公司常用领域:自动化运维、自动化测试、大数据分析、爬虫、Web 等。
使用python的公司:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等
ps:有上可知,python正越来越受到程序员们的广泛认可,那python的优势在哪里呢?
1、python和其他语言对比:
a.C 和 Python、GO、Java、C#等
C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
b.Python 和 C Python这门语言是由C开发而来
对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
对于速度:Python的运行速度相较与C,绝逼是慢了
c.python和GO语言
对于使用:Go语言是未来的语言,它属于编译型(有关解释型语言和编译型语言解释,注1)语言,作为新型的语言,网络传输方面目前所有语言第一,就是语法基础等方面还有待于完善。
对于速度: 与C相当,很牛逼的语言,身为小白的我,坐等它的成熟。
d.Python 和 Java、C#等
对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
对于速度:Python在速度上可能稍显逊色
ps.所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。
2、python的种类:
a.CPython:
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。目前我们建议使用3.5版本。
解释器:CPython。为C语言开发
运行方式:命令行下使用python命令直接运行。
b.pypy:
Python实现的Python,pypy采用JIT技术,将Python的字节码字节码再编译成机器码。其目的就是一次编译所有py变为pyc,直接调用加快程序调用速度。
解释器:pypy。
运行方式:命令行下使用pypy命令运行
c.其他Python:
Jyhton:
Jython是运行在java平台上的python解释器,可以直接把python代码编译成java字节码执行。
IronPython:
IronPython和Jython类似,只不过IronPython是运行在微软.net平台上的python解释器。可以直接把python代码编译成.net字节码执行。
RubyPython、Brython ..
ps.所以目前python对于所有主流语言都有很好的兼容,虽然如此,如果要和java或.net等平台交互,最好的方式还是通过网络调用交互,以此确保各各程序之间的独立性。
ps.PyPy,在Python的基础上对Python的字节码进一步处理,从而提升执行速度!
二、 python安装与执行
前面说了这么多,下面开始正式学习python了。
1、安装:
a.windows安装
1 1、下载安装包2 https://www.python.org/downloads/
3 2、安装4 默认安装路径:C:\python275 3、配置环境变量6 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 -->【Python安装目录追加到变值值中,用 ; 分割】7 如:原来的值;C:\python27,切记前面有分号
View Code
b.linux安装
1 查看默认Python版本2 python -V3
4 1、安装gcc,用于编译Python源码5 yum install gcc6 2、下载源码包,https://www.python.org/ftp/python/
7 3、解压并进入源码文件8 4、编译安装9 ./configure10 make all11 make install12 5、查看版本13 /usr/local/bin/python2.7 -V14 6、修改默认Python版本15 mv /usr/bin/python /usr/bin/python2.6
16 ln -s /usr/local/bin/python2.7 /usr/bin/python17 7、防止yum执行异常,修改yum使用的Python版本18 vi /usr/bin/yum19 将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6
View Code
2、Hello world!程序
a.创建helloworld.py文件(pyhton程序,一般为.py结尾)
#!/usr/bin/env python#解释器调用路径#-*- coding:utf-8 -*-#声明解释器编码#Author:Shu Yang Wang
#程序执行
print('hello world!')
View Code
b.执行方式
windows
"D:\Program Files\Python35\python.exe" helloword.py #直接文件执行(以后运行程序多为此方式)
"D:\Program Files\Python35\python.exe" #进入解释器执行print('helloword!')
linux
python helloword.py #直接文件执行(以后运行程序多为此方式)
ptyhon #进入解释器执行print('helloword!')
ps.文件头部要加#!/user/bin/evn python及chmod +x helloword.py
然后./helloword.py实行。
3、编码格式(作用:声明编码格式)
可以让计算机直接认识的语言,其实只有汇编语言,即0和1的代码。且计算机是美国人发明的,因此,最早只有英文加特殊字符共127位字母与0和1代码进行一一对应。而美国人觉得够用了2^7 = 128不够他们扩展的,所以采用2^8 =256的内存空间(单位为‘字节’, 即256字节),够美国人用的了。
这就是最早的编码ASCII码。显然,256位字符不够中文用的,中国人也想用,怎么办呢?显然聪明的中国人想到了办法,通过在做一张新的表并把新表通过取ASCII码的几位映射到ASCII码中使用。这就是GBK。有21003字符,2字节一个汉字。
全世界人民都想使用电脑,于是个个国家的编码应运而生,日本shift_JTS,韩国EUC-kr等等。中国身为共产主义多民族国家,不能只搞汉语啊,体现民族平等嘛,于是把满文,回文等等的文字也写了新的编码GB2312.有27484字,2字节一个汉字
国际标准组织一看,世界居然为了编码乱搞,冲突不断,乱码丛生。因此unicode诞生了,把所有语言统一到一个字符编码中,unicode也因此被称为万国码。最少用2个字节表示1个字符。
这时,美国不干了,为什么我建立的计算机,被你们乱改一通,最后我一个字符搞定的事,被你们改成了2个字符,我本来存100MB的东西,莫名其妙变成了200MB。不行,于是utf-8诞生了,utf-8是对uniccode的优化压缩。英文字符占1个字符,欧洲字符占2个字符,中文占3个字符……, 故utf-8又称可变字符编码。
ps.字符编码总结:
编码名
占用字节(1中文字符)
python版本(默认)
ASCII
没有中文
python2
GBK
2个字节
无
unciode
3个字节
无
utf-8
3个字节
python3
ps.二进制换算:
最小计算机表示单位为bit(位)
8bit = 1byte(字节,最小存储字节)
1024byte = 1MB(兆) MB--〉GB--〉TB --〉PB
三、pycharm简单设置及使用
1、使用:
a、创建项目:file ---> new project
b、新建文件夹:右击要创建文件夹的项目或上级目录 ----〉new ---〉directory
c、新建文件:右击要创建文件夹的项目或上级目录 ----〉new ---〉file
d、运行文件:要执行的.py文件内容---〉右击---〉run xx.py
2、文件编码:
file ---->default settings --->editor --->file encodings
3、程序文件模版:
file ---->default settings --->editor --->file and code templates
4、改变字体大小:
file ----〉settings ----〉editor ---> General ---〉mouse
ps.pycharm的更多应用请访问:
http://www.cnblogs.com/wangshuyang/articles/5846563.html
四、注释使用及.pyc文件
1、python文件注释:
# 单行注释
''' '''' 多行注释
2、.pyc文件:
.pyc文件存储的是介于0101计算机语言和我们写的文件之间的语言。是有python解释器根据我们编写的代码自动生成的文件。具体可查看, 注1
五、python变量(初识)
1、变量命名规则:
a.字母
b.数字(不能开头)
c.下划线
ps.硬性规定,命名必须是字母,数字,下划线,且不能以数字开头。
软性规则,以下划线分割
2、实例:
a.写法: age_of_oldboy = 60
b.命名潜规则:age_of_oldboy 普通变量
Age_of_oldboy 首字母大写,一般为类
AGE_OF_OLDBOY 一般为常量写法
ps.小白做大拿从此开始,一步一步走
六、python用户交互(输入输出):
1、输入
v = input('>>>')
import getpass
v = input('>>>')
2、输出
print('input', v)
3、实例:
1 '''
2 输入,输出3 '''
4
5 #输入终端隐藏,pycharm不好使
6 importgetpass7
8 #正常输入,显示
9 name = input('name:')10 password = getpass.getpass('password:')11 age = 18
12
13 #正常输出
14 print(name, password, age)
View Code
七、if条件语句
1、if...else...结构
a.含义:
if 条件:
条件成功,执行
else:
条件失败,执行
b.实例:
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 if...else...7 '''
8 #输入终端隐藏,pycharm不好使
9 importgetpass10
11 #正常输入,显示
12 user_name = input('user_name:')13 password = getpass.getpass('password:')14 age = 18
15
16 #if ... else ... (如果... 否则...)
17 if user_name == 'wangshuyang' and password == '123':18 #正常输出
19 print(user_name, password, age)20 else:21 print('密码不对!')
View Code
2、if ...elif ... else ...结构
a.含义:
if 条件:
if条件成功,执行
elif 条件:
elif条件成功,执行
elif 条件:
elif条件成功,执行
....
else:
上述条件都失败,执行
b.实例:
1 username = input('>>>')2 if username == 'shuyang':3 print('普通管理')4 elif username == 'a':5 print('超级管理')6 elif username == 'b':7 print('人')8 elif username == 'c':9 print('装逼犯')10 else:11 print('再见...')12
13 print('end')
View Code
3、实例:
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5
6 '''
7 if...elif...else... 及嵌套8 '''
9
10 user_type = input('请输入用户类型:')11 if user_type == 'admin':12 user_name = input('用户名:')13 #if ... elif ... else ... 如果... 如果... 否则...
14 if user_name == 'wangshuyang':15 print('欢迎光临! %s' %user_name)16 elif user_name == 'lipingzong':17 print('欢迎光临! %s' %user_name)18 else:19 print('没有该人')20 else:21 print('类型错误')
View Code
八、循环语句(while & for)
1、while循环
a.结构
while 条件:
continue #立即执行下一个循环
break #跳出当前while的所有循环
else: #while条件不成立执行
b.实例1:1,2,3,4,5,6, 8, 9, 10 打印
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 while 循环7 '''
8
9 #1,2,3,4,5,6, 8, 9, 10 打印
10
11 i = 1
12 whileTrue:13 if i == 7:14 i += 1 #i = i + 1
15 continue #不往下执行,立即执行下次循环
16 print(i)17 i += 1
18 if i == 11:19 break #跳出本次循环
20
21 '''
22 方法二:23 i = 124 while i < 11:25 if i == 7:26 i += 127 continue28 print(i)29 '''
View Code
c.实例2:while 计算1到100的和
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 while 计算1到100的和7 '''
8
9 value =010 i = 1
11 while i < 101:12 value += i #value = vlaue + i
13 i += 1 #i = i + 1
14
15 print(value)
View Code
d.实例3:求1-2+3-4+5 ... 99的所有数的和
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 while 求1.. 100奇数 、 偶数7 '''
8 '''
9 #求奇数10 i = 111 while i < 101:12 if i%2 == 1:13 print(i)14 i += 115
16
17 #求偶数18 i = 119 while i < 101:20 if i%2 == 0:21 print(i)22 i += 123 '''
24
25 #1-2+3-4+5…… 99
26
27 value =028 i = 1
29 while i < 100:30 if i % 2 == 1:31 value +=i32 else:33 value -=i34 i += 1
35 print(value)
View Code
e.实例4:用户登陆(三次机会重试)
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 用户密码输入错误>3次退出7 '''
8 i =09 while i < 3:10 username = input('username:')11 password = input('password:')12 if username == 'shuyang' and password == '123':13 print('%s登陆成功!!' %username)14 break
15 else:16 print('%s登陆失败!!还有%s机会' % (username, 2 -i))17 i += 1
18 #while循环,条件失败,执行
19 else:20 print('3次登陆失败!!!退出')
View Code
2、for循环
a.结构:
for 条件:
continue #立即执行下一个循环
break #跳出当前while的所有循环
else: #while条件不成立执行
b.实例:猜数字
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 for猜数字7 '''
8
9 guess_num = 19
10 #range(开始,结束,步长) range(0,3)== 0,1,2,
11 for i in range(0,3):12 guess_num_inp = input('猜数字>>>')13 #.isdigit()输入是否是一个数字
14 ifguess_num_inp.isdigit():15 if 'guess_num_inp' ==guess_num:16 print('猜对了!!!!')17 else:18 print('猜的不对!!!')19 else:20 print('请输入数字!!!!')21 else:22 print('没有机会了')
View Code
ps.while和for的区别,for更加倾向处理list,dict循环,while更加倾向于业务逻辑?
九、运算符
1、算术运算符:
2、比较运算:
3、赋值运算:
4、逻辑运算:
5、成员运算:
6、身份运算:
7、位运算:
1 a = 60 #60 = 0011 1100
2 b = 13 #13 = 0000 1101
3 c =04
5 c = a & b; #12 = 0000 1100
6 print "Line 1 - Value of c is", c7
8 c = a | b; #61 = 0011 1101
9 print "Line 2 - Value of c is", c10
11 c = a ^ b; #49 = 0011 0001 #相同为0,不同为1
12 print "Line 3 - Value of c is", c13
14 c = ~a; #-61 = 1100 0011
15 print "Line 4 - Value of c is", c16
17 c = a << 2; #240 = 1111 0000
18 print "Line 5 - Value of c is", c19
20 c = a >> 2; #15 = 0000 1111
21 print "Line 6 - Value of c is", c
View Code
ps. 补充要点:
a. i += 1 等同于 i = i + 1。同理*= -= 等赋值运算符都为该系列。
b. 逻辑运算,从左往右一个一个看,先算()内的数值。
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 逻辑运算7 '''
8
9 #1正确
10 if 1 == 1 or 1 > 2 and 1 == 4:11 print('正确')12 else:13 print('错误')14
15 #2错误
16 if 1 == 1 and 1 > 2 or 1 == 4:17 print('正确')18 else:19 print('错误')20
21 #3错误
22 if 1 == 0 and 1 > 2 or 1 == 4:23 print('正确')24 else:25 print('错误')26
27 #4错误
28 if 1 == 0 and (1 < 2 or 1 == 4):29 print('正确')30 else:31 print('错误')32
33 #5错误
34 if 1 == 0 and 1 > 2 or 1 == 4:35 print('正确')36 else:37 print('错误')
View Code
c.成员运算
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 成员运算符7 '''
8 content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
9
10 if "前几天去" incontent:11 print('包含敏感字符')12 else:13 print(content)
View Code
十、python数据类型初识(int,bool,str,list,dict)
type()查看变量类型。
1、int(整形)
a.创建
b.转换
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 int(整形)7 a.创建8 b.转换9 '''
10
11 #创建
12 age = 19
13 age1 = int(19)14 print(age,age1)15
16 #转换
17 age2 = '19'
18 print(type(age2))19 #isdigit()判断是否是一个数字,int()只能转数字,不能转字母、中文等。会报错
20 ifage2.isdigit(age2):21 int(age2)22 print(('tpye:%s age2:%d') % (type(age2), age2))
View Code
2、bool(布尔值)
a.创建
b.转换
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 bool(布尔值)7 a.创建8 b.转换9 '''
10
11 #创建
12 a =True13 b =False14
15 #转换
16 #数字转换,只有0是False,其他True
17 #字符串, 只有""是False,其他True
18 #其他,待续……
19 a1 =020 a2 = 100
21 a3 = -100
22 a1_bool =bool(a1)23 a2_bool =bool(a2)24 a3_bool =bool(a3)25 print('a1 %s:%s bool_type:%s'%(a1,a1_bool, type(a1_bool)))26 print('a2 %s:%s bool_type:%s'%(a2,a2_bool, type(a1_bool)))27 print('a3 %s:%s bool_type:%s'%(a3,a2_bool, type(a1_bool)))28
29
30 b1 = ''
31 b2 = 'fafa'
32 b3 = 'AFSD@'
33 b1_bool =bool(b1)34 b2_bool =bool(b2)35 b3_bool =bool(b3)36 print('b1 %s:%s bool_type:%s'%(b1,b1_bool, type(a1_bool)))37 print('b2 %s:%s bool_type:%s'%(b2,b2_bool, type(a1_bool)))38 print('b3 %s:%s bool_type:%s'%(b3,b3_bool, type(a1_bool)))39
40 '''
41 结果:42 a1 0:False bool_type:43 a2 100:True bool_type:44 a3 -100:True bool_type:45 b1 :False bool_type:46 b2 fafa:True bool_type:47 b3 AFSD@:True bool_type:48 '''
View Code
3、str(字符串)
a.创建
b.转换
c.拼接
d.格式化
e.是否在子序列中
f.移除空白.strip()
g.分割.split('分割符',步长)
h.长度len()
i.索引[]
j.切片[开始:结束:步长]
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 str(字符串)7 a.创建 b.转换 c.拼接 d.格式化 e.是否在子序列中 f.移除空白8 g.分割 h.长度 i.索引 j.切片9 '''
10
11 #创建
12 name = 'shuyang'
13 name1 = str('shuyang')14 print('name: %s tpye:%s \n name1:%s tpye:%s\n' %(name,type(name),name1,type(name1)))15
16 #转换
17 age = 19
18 age_str =str(age)19 print('age_str:%s tpye:%s' %(age, age_str))20
21 #字符串拼接
22 name2 = 'alex'
23 gender = '女'
24 new_str = name2 +gender25 print(new_str)26
27 #字符串格式化,使用占位符%s(待续...)
28 name3 = '我叫李杰,性别:%s,我今年%s岁,我在说谎!'
29 new_str2 = name3 %('男',19,)30 print(new_str2)31 name4 = '我叫李杰,性别:%s,我今年%s岁,我在说谎!' %('男',19)32 print(name4)33
34 #判断子序列是否在其中
35 content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
36 if "前几天去" incontent:37 print('包含敏感字符')38 else:39 print(content)40
41 #移除空白
42 val = "alex"
43 print(val)44 new_val = val.strip() #左右去
45 #new_val = val.lstrip()# 左边去
46 #new_val = val.rstrip() # 右边去
47 print(new_val)48
49 #分割.split('分隔符',步长)
50 user_info = "alex|sb123|9"
51 v = user_info.split('|')52 #v = user_info.split('|',1)
53 #v = user_info.rsplit('|',1) #右分割
54 #v = user_info.lsplit('|',1) #左分割
55 print(v)56
57 #长度(字符)python2,中文按2字节算,python按,中文按1字符算
58 val = "李杰nb"
59 v =len(val)60 print(v)61
62 '''
63 结果:64 465 '''
66
67 #索引
68 val = "李杰mb"
69 v =val[0]70 print(v)71
72 val = input('>>>')73 i =074 while i
77
78 '''
79 输入:dd80 结果:81 d82 d83 '''
84 #切片
85 name = '我叫李杰,性别我今年岁,我在说谎!'
86 print(name[0])87 print(name[0:2])88 print(name[3:9])89 print(name[7:])90 print(name[4:-2])91 print(name[-2:])92
93 '''
94 结果:95 我96 我叫97 杰,性别我今98 我今年岁,我在说谎!99 ,性别我今年岁,我在说100 谎!101 '''
View Code
4、list(列表)
a.创建
b.in判断
c.索引[]
d.追加.append()
e.插入.insert()
f.删除del .remove()
g.更新
h.输出
i.长度len()
j.切片[开始:结束:步长]
1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-
3 # Author:Shu Yang Wang4
5 '''6 list(列表)7 a.创建 b.in判断 c.索引 d.追加 e.插入 f.删除 g.更新 h.输出 i.长度8 j.切片9 '''10
11 #创建12 a = ['shuyang','牛','jack', 23423]13 a1 = list(['shuyang','牛','jack', 23423])14 print('list_a: %s list_a1: %s'%(a, a1))15
16 #in判断17 if 'sh' ina:18 print('在列表中有改元素')19 else:20 print('不在列表中有改元素')21 if 'sh' in a[0]:22 print('在列表元素[0]中存在')23
24 #索引25 print('list_a: %s list_a1: %s'%(a, a1))26 val = a[0]27 print('a[0]:%s', val)28
29 #追加30 print('list_a: %s list_a1: %s'%(a, a1))31 a.append('xxoo')32 print('list_a: %s' %a)33
34 #插入35 print('list_a: %s list_a1: %s'%(a, a1))36 a1.insert(0,'车')37 print('list_a1_insert_0: %s'%a1)38
39 #删除40 print('list_a: %s list_a1: %s'%(a, a1))41 a.remove('jack')42 del a[0]43 print('list_a_remove_jack_and_0: %s'%a)44
45 #更新46 print('list_a: %s list_a1: %s'%(a, a1))47 a1[1] = '发发'
48 print('list_a1_update_1: %s' %a1)49
50 #输出51 print('list_a: %s list_a1: %s'%(a, a1))52 for item ina:53 print('a元素: %s' %item)54
55 #长度56 print('list_a: %s list_a1: %s'%(a, a1))57 val1 =len(a)58 print('list_len_a:%s' %val1)59
60 #切片61 print('list_a: %s list_a1: %s'%(a, a1))62 v = a1[0::2] #[开始:结束:步长]63 print('a1_[0::2]: %s' % (v))
View Code
5、dict(字典)
a.创建
b.索引
c.增加&更新
d.删除
e.输出
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 dict(字典)7 a.创建 b.索引 c.增加&更新 d.删除8 e.输出9 '''
10
11 #创建
12 a = {'name':'shuyang', 'password':'123123'}13 print('a_dict: %s' %a)14
15 #索引
16 n = a['name']17 print('n_name: %s' %n)18
19 #增加&更新
20 #无key值时为增加,有key值时为更新
21 a['age'] = 19
22 a['name'] = 'jack'
23 print('a_dict_add_update: %s' %a)24
25 #删除
26 del a['name']27 print('del_name_a_dict: %s' %a)28
29 #输出
30 print('a_dict: %s' %a)31 for item ina:32 print(item)33 #break
34 #continue
View Code
ps.list & dict嵌套
a.实例1:相互嵌套
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 dict&list相互嵌套实例17 '''
8
9 user_dict ={10 'k1': 'v1',11 'k2':{'kk1':'vv1', 'kk2':'vv2'},12 'k3':123,13 'k4':['shuyang', 'jack', ['a', 'b', 'c'], '李杰',{'k1':'v1'}]14 }15 print('dict: %s' %user_dict)16
17 #添加dict --〉 list的元素
18 user_dict['k4'][2].append('123')19 print('add_dict_list: %s' %user_dict)20
21 #添加dict ---〉 dict的元素
22 user_dict['k4'][4]['k2'] = 'v1'
23 print('add_dict_dict: %s' % user_dict)
View Code
b.实例2:多用户密码登陆
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 dict_list多用户登陆7 '''
8
9 user_list =[10 {'name':'alex','pwd':'123123','times':1},11 {'name':'eric','pwd':'123123','times':1},12 {'name':'tony','pwd':'123123','times':1},13 {'name':'shuyang','pwd':'123123','times':1}14 ]15 user = input('用户名:')16 pwd = input('密码:')17
18 for item inuser_list:19 if user == item['name'] and pwd == item['pwd']:20 print('登录成功')
View Code
十一、文件读写初识
文件操作有读、写,追加等,分别对应r,w,a等,今天只对读写,进行初步的认识。以后在具体讨论,谢谢!
1、打开文件并读取内容
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 #打开并读取文件内容
6 #以只读模式打开文件句柄
7 f1 = open('db', 'r')8 #把文件内容读取到内存当中
9 data =f1.read()10 #关闭文件句柄
11 f1.close()12
13 #打印文件内容
14 print(data)
View Code
2、写入文件内容
1 #写入文件内容
2
3 user_info_write =‘a\nb\nc\n’4
5 #以写模式打开db文件句柄
6 f2 = open('db', 'w')7 #以覆盖db文件内容方式写入文件
8 f2.write(user_info_write)9 #关闭文件句柄
10 f2.close()
View Code
3、实例
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #Author:Shu Yang Wang
4
5 '''
6 登录示例7 1. 打开并读取文件内容8 2. 格式化,列表中嵌套字典9 3. 列表中嵌套的字典10 4. 重新写入文件11 '''
12
13 #1. 打开并读取文件内容
14 f1 = open('db', 'r')15 data =f1.read()16 f1.close()17
18 #2. 格式化,列表中嵌套字典
19 print(data)20 user_info_list =[]21 user_str_list = data.split('\n')22 for item inuser_str_list:23 temp = item.split('|')24 v ={25 'name': temp[0],26 'pwd': temp[1],27 'times': temp[2]28 }29 user_info_list.append(v)30 user_info_list[1]['times'] = 3
31 print(user_info_list)32
33 #3. 列表中嵌套的字典
34 user_info_write = ''
35 for item_write inuser_info_list:36 temp_write = '%s|%s|%s\n'%(item_write['name'], item_write['pwd'], item_write['times'])37 user_info_write = '%s%s' %(user_info_write,temp_write)38 print(user_info_write)39
40 #4. 写入文件内容
41 f2 = open('db', 'w')42 f2.write(user_info_write)43 f2.close()
View Code
附录:
1、注解1:
a.解释型语言和编译型语言
计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。
通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。
此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。
用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。
b.图例:
c.编译型vs解释型
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
d.更多解释详见
http://www.cnblogs.com/alex3714/articles/5465198.html
http://www.cnblogs.com/wupeiqi/articles