内容概要:
一、python介绍
二、安装
三、第一个python程序
四、变量和字符编码
五、用户输入
六、数据类型
七、一切皆对象
八、数据运算
九、if else 流程判断
十、while循环
十一、for循环
一、python介绍 |
python简介:
Python是著名的Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言,之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者,在最新的TIOBE排行榜python排名第五。
Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
python的应用领域:
- 云计算: 云计算最火的语言, 典型应用OpenStack
- WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
Python 是一门什么样的语言?
python 是一门动态解释性的强类型定义语言
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
Python解释器
要运行代码,就需要Python解释器去执行.py
文件。
CPython
当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python
就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
二、python安装 |
windows
1
、下载安装包
https:
/
/
www.python.org
/
downloads
/
2
、安装
默认安装路径:C:\python27
3
、配置环境变量
【右键计算机】
-
-
》【属性】
-
-
》【高级系统设置】
-
-
》【高级】
-
-
》【环境变量】
-
-
》【在第二个内容框中找到 变量名为Path 的一行,双击】
-
-
> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
无需安装,原装Python环境
ps:如果自带
2.6
,请更新至
2.7
三、第一个python程序 |
学编程语言第一个python程序莫过于hello world,来看看python如何实现的。在linux下输入python命令,进入交互模式,对照版本敲以下代码:
# python2.x print "hello world" #python3.x print("hello world")
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py
,那么就需要在 hello.py 文件的头部指定解释器
#!/usr/bin/env python print "hello,world"
四、变量和字符编码 |
1.变量声明
#_*_coding:utf-8_*_ name = "Susu"
上述声明了变量名为name,值为Susu.
2.变量的定义规则
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
3.变量的赋值
name="susu" name1=name name="tom" print(name,name1) 结果: tom susu
上述结果表明,当有一个变量对另一个变量赋值的时候,改变前一个变量并不会影响后一个变量的值。
4.字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode。
为了节约成本,是对Unicode编码的压缩和优化,出现了出现了UTF-8
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- #告诉python解释器,用什么编码来执行源代码 3 print "你好,世界"
5.注释
单行注视:# 被注释内容
多行注释:""" 被注释内容 """
五、用户输入 |
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #name = raw_input("What is your name?") #only on python 2.x 4 name = input("What is your name?") 5 print("Hello " + name )
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import getpass 5 6 # 将用户输入的内容赋值给 name 变量 7 pwd = getpass.getpass("请输入密码:") 8 9 # 打印输入的内容 10 print(pwd)
六、数据类型 |
1、数字
E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
int(整型)
"hello world"
1 name = "alex" 2 print "i am %s " % name 3 4 #输出: i am alex
PS: 字符串是 %s;整数 %d;浮点数%f
1 # Author:Alex Li 2 3 info = ''' 4 -------- info of %s ----- 5 Name:%s 6 Age:%d 7 Job:%s 8 Salary:%s 9 ''' % (name,name,age,job,salary) 10 11 info2 = ''' 12 -------- info of {_name} ----- 13 Name:{_name} 14 Age:{_age} 15 Job:{_job} 16 Salary:{_salary} 17 '''.format(_name=name, 18 _age=age, 19 _job=job, 20 _salary=salary) 21 22 info3 = ''' 23 -------- info of {0} ----- 24 Name:{0} 25 Age:{1} 26 Job:{2} 27 Salary:{3} 28 '''.format(name,age,job,salary)
1 name = "my \tname is {name} and i am {year} old" 2 print(name.capitalize())#首字母大写
3 print(name.count("a")) 4 print(name.center(50,"-"))#不够50字符,“-”补全 5 print(name.endswith("ex"))#判断是否ex结尾 6 print(name.expandtabs(tabsize=30)) 7 print(name[name.find("name"):])
name is {name} and i am {year} old 8 print(name.format(name='alex',year=23)) 9 print(name.format_map( {'name':'alex','year':12} )) 10 print('ab23'.isalnum()) 11 print('abA'.isalpha()) 12 print('1A'.isdecimal()) 13 print('1A'.isdigit()) #是否为数字 14 print('a 1A'.isidentifier()) #判读是不是一个合法的标识符 15 print('33A'.isnumeric()) 16 print('My Name Is '.istitle()) 17 print('My Name Is '.isprintable()) #tty file ,drive file 18 print('My Name Is '.isupper()) 19 print('+'.join( ['1','2','3']) ) 20 print( name.ljust(50,'*') ) 21 print( name.rjust(50,'-') ) 22 print( 'Alex'.lower() )#字符串变为小写字母 23 print( 'Alex'.upper() )#字符串变为大写字母 24 print( '\nAlex'.lstrip() ) 25 print( 'Alex\n'.rstrip() ) 26 print( ' Alex\n'.strip() ) 27 p = str.maketrans("abcdefli",'123$@456') 28 print("alex li".translate(p) ) 29 30 print('alex li'.replace('l','L',1)) 31 print('alex lil'.rfind('l')) 32 print('1+2+3+4'.split('\n'))#变为列表
['1+2+3+4'] 33 print('1+2\n+3+4'.splitlines()) 34 print('Alex Li'.swapcase()) 35 print('lex li'.title()) 36 print('lex li'.zfill(50))
1 name_list = ['alex', 'seven', 'eric'] 2 或 3 name_list = list(['alex', 'seven', 'eric'])
names[1:2] 顾头不顾尾 #追加 names.append('sujun') names=['zhangyang','sdew',23,123] #插入23前面 names.insert(2,'sujun') 结果: ['zhangyang', 'sdew', 'sujun', 23, 123] #修改 names[-1]='haha' #删除 1.names.remove('sujun') 2.del name[1] 3.name.pop() 删除最后一个 #找位置 print(names.index('sujun')) #统计重名 print(names.count('sujun')) #清空 names.clear() #反转 names.reverse() #合并 names.extend(names2)
1 ages = (11, 22, 33, 44, 55) 2 或 3 ages = tuple((11, 22, 33, 44, 55)
1 name_list = ['alex', 'seven', 'eric'] 2 或 3 name_list = list(['alex', 'seven', 'eric']) 4 info = { 5 'stu1101': "TengLan Wu", 6 'stu1102': "LongZe Luola", 7 'stu1103': "XiaoZe Maliya", 8 } 9 10 b ={ 11 'stu1101': "Alex", 12 1:3, 13 2:5 14 }
字典的合并:
1 info.update(b) 2 print(info )
有则修改,无则添加
#取元素
info['stu1104'] 或者 info.get('stu1103')
#判断是否存在
'stu1103' in info
删除:
1 del info["stu1101"] 2 info.pop("stu1101")
循环:
1 #推荐 2 for i in info: 3 print(i,info[i]) 4 5 for k,v in info.items(): 6 print(k,v)
4.bytes类型
Python3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事,而在python2中是混用的,例如:在pytho2中使用socket网络编程传递字符串的时候可以直接传递字符串,但是在python3中必须将字符串转化为bytes类型。
转换原理图:
1 >>>'€20'.encode('utf-8') 2 b'\xe2\x82\xac20' 3 >>> b'\xe2\x82\xac20'.decode('utf-8') 4 '€20'
关于进制:
- 二进制,01
- 八进制,01234567
- 十进制,0123456789
- 十六进制,0123456789ABCDEF 二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1
七、一切皆对象 |
对于Python,一切事物都是对象,对象基于类创建。
所以,以下这些值都是对象: 22、"WD"、['a', 'b', 'c'],并且是根据不同的类生成的对象。
八、数据运算 |
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:
位运算:
1 #!/usr/bin/python 2 3 a = 60 # 60 = 0011 1100 4 b = 13 # 13 = 0000 1101 5 c = 0 6 7 c = a & b; # 12 = 0000 1100 8 print "Line 1 - Value of c is ", c 9 10 c = a | b; # 61 = 0011 1101 11 print "Line 2 - Value of c is ", c 12 13 c = a ^ b; # 49 = 0011 0001 #相同为0,不同为1 14 print "Line 3 - Value of c is ", c 15 16 c = ~a; # -61 = 1100 0011 17 print "Line 4 - Value of c is ", c 18 19 c = a << 2; # 240 = 1111 0000 20 print "Line 5 - Value of c is ", c 21 22 c = a >> 2; # 15 = 0000 1111 23 print "Line 6 - Value of c is ", c
运算符优先级:
三元运算:
1 a,b,c=1,2,3 2 d=a if a<b else c 3 print(d) 4 结果:1 5 d=a if a>b else c 6 结果:3
更多内容:
http://www.runoob.com/python/python-operators.html
九、表达式if ... else |
场景一、用户登陆验证
1 # 提示输入用户名和密码 2 3 # 验证用户名和密码 4 # 如果错误,则输出用户名或密码错误 5 # 如果成功,则输出 欢迎,XXX! 6 7 8 #!/usr/bin/env python 9 # -*- coding: encoding -*- 10 11 import getpass 12 13 14 name = raw_input('请输入用户名:') 15 pwd = getpass.getpass('请输入密码:') 16 17 if name == "alex" and pwd == "cmd": 18 print("欢迎,alex!") 19 else: 20 print("用户名和密码错误")
场景二、猜年龄游戏
在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了,最多允许猜三次。
1 age_of_oldboy = 56 2 for i in range(3): 3 guess_age = int(input("guess age:") ) 4 if guess_age == age_of_oldboy : 5 print("yes, you got it. ") 6 break 7 elif guess_age > age_of_oldboy: 8 print("think smaller...") 9 else: 10 print("think bigger!") 11 else: 12 print("you have tried too many times..fuck off")
十、while loop |
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 5 my_age = 28 6 7 count = 0 8 while count < 3: 9 user_input = int(input("input your guess num:")) 10 11 if user_input == my_age: 12 print("Congratulations, you got it !") 13 break 14 elif user_input < my_age: 15 print("Oops,think bigger!") 16 else: 17 print("think smaller!") 18 count += 1 #每次loop 计数器+1 19 else: 20 print("猜这么多次都不对,你个笨蛋.")
十一、for循环 |
1 #_*_coding:utf-8_*_ 2 __author__ = 'Susu' 3 4 for i in range(10): 5 print("loop:", i )
需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环
1 for i in range(10): 2 if i<5: 3 continue #不往下走了,直接进入下一次loop 4 print("loop:", i )
需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
1 for i in range(10): 2 if i>5: 3 break #不往下走了,直接跳出整个loop 4 print("loop:", i )