开启python之路
内容概要:
一、python介绍
二、安装
三、第一个python程序
四、变量和字符编码
五、用户输入
六、数据类型
七、一切皆对象
八、数据运算
九、if else 流程判断
十、while循环
十一、for循环
十二、break、continue
一、python介绍 |
python简介:
Python是著名的Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言,之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者,在最新的TIOBE排行榜python排名第五。
python分类:
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py
为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py
文件。由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
Cpython
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(.pyc文件),然后运行在Python虚拟机上,运行完毕之后释放内存,退出程序。
jython
Jython是个Python的一种实现方式,Jython编译Python代码为Java字节码,然后由JVM(Java虚拟机)执行,说白了此Python程序与Java程序没有区别,只是源代码不一样。
IronPython
IronPython是Python的C#实现,并且它将Python代码编译成C#中间代码(与Jython类似),然后运行,它与.NET语言的互操作性也非常好。
- pypy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
python代码运行过程:
二、安装 |
1.windows
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python3
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python3,切记前面有分号
三、第一个python程序 |
学编程语言第一个python程序莫过于hello world,来看看python如何实现的。在linux下输入python命令,进入交互模式,对照版本敲以下代码:
# python2.x
print "hello world" #python3.x
print("hello world")
四、变量和字符编码 |
1.变量声明
name=“WD”
上述声明了变量名为name,值为WD。
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="WD"
name1=name
name="jack"
print(name,name1)
结果:
jack WD
上述结果表明,当有一个变量对另一个变量赋值的时候,改变前一个变量并不会影响后一个变量的值。
4.字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode。
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),在python2.x中如果是如下代码的话:
#!/usr/bin/env python
print "你好,世界"
报错:ascii码无法表示中文
应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*- print "你好,世界"
5.注释
单行注视:# 被注释内容
多行注释:""" 被注释内容 """
五、用户输入 |
1.python2.x
在python2.x版本中有两个用户输入函数input、raw_input
- raw_input
在python2中raw_input默认会将你输入的内容作为字符串处理,例如:
#!/usr/bin/env python
#_*_coding:utf-8_*_
name = raw_input("input your name:")
print type(name)
print("Hello " + name )
结果:
input your name:1111
<type 'str'>
Hello 1111
- input
而pyton2中的input默认会识别输入内容是数字还是字符串,并且当用户输入的内容为字符串的时候会把字符串当
作变量处理。例如:
#!/usr/bin/env python
#_*_coding:utf-8_*_
msg='WD'
name = input("input your name:")
print type(name)
print("Hello " + name )
结果:
input your name:msg
<type 'str'>
Hello WD
2.python3.x
python3中优化了用户输入,只用input方法,并且会把输入内容当作字符串处理。例如:
#!/usr/bin/env python
#_*_coding:utf-8_*_
name=input("input your name:")
print(type(name))
print(name)
结果:
input your name:WD
<class 'str'>
WD
六、数据类型 |
2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。
int(整型)
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
“hello world”
4.bytes类型
Python3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事,而在python2中是混用的,例如:在pytho2中使用socket网络编程传递字符串的时候可以直接传递字符串,但是在python3中必须将字符串转化为bytes类型。
转换原理图:
>>>'€20'.encode('utf-8')
b'\xe2\x82\xac20'
>>> b'\xe2\x82\xac20'.decode('utf-8')
'€20'
关于进制:
- 二进制,01
- 八进制,01234567
- 十进制,0123456789
- 十六进制,0123456789ABCDEF 二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1
七、一切皆对象 |
对于Python,一切事物都是对象,对象基于类创建。
所以,以下这些值都是对象: 22、"WD"、['a', 'b', 'c'],并且是根据不同的类生成的对象。
八、数据运算 |
算数运算:
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:
位运算:
运算符优先级:
九、if else流程判断 |
基本语法:
#语法一
if 条件:
pass #语法二
if 条件:
pass
else:
pass #语法三
if 条件:
pass
elif 条件:
pass
...
else:
pass
示列一 if else:
1.模拟用户登录,帐号密码正确打印欢迎信息
2.错误打印用户名或者密码错误
#/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:W-D
user="WD"
passwd="123qwe"
username=input("username:")
password=input("password:")
if user==username and passwd==password:
print("welcome!")
else:
print("Invalid username or password! ")
示列二:if elif else
1.猜数字,正确打印猜对
2.猜大打印猜大,猜小打印猜小
num=22
guess_num=int(input("guess number:"))
if guess_num > num:
print("Too bigger!")
elif guess_num < num:
print("Too smaller!")
else:
print("yes, you are right!")
if的三元运算:
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
示列:
a=22
b=33
number=a if a>b else b#三元运算
print(number)
结果:
33
十、while循环 |
while循环在如果没有明确的结束标志情况下会进入死循环,所以一般我们写while循环的时候需要结束条件。
基本语法:
while 结束条件:
pass #eg:
i=1
while i<10:#结束条件为i大于10
print(i)
i+=1
结果:
1
2
3
4
5
6
7
8
9
示列一:
还是猜数字游戏,现在我们让玩家连续猜,但是最多猜三次。
#/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:W-D
count=0
while count<3:
num=22
guess_num=int(input("guess number:"))
if guess_num > num:
print("Too bigger!")
elif guess_num < num:
print("Too smaller!")
else:
print("yes, you are right!")
break#后续会提到break作用
count+=1
在python中while还有更无敌的语法,同样以上述代码为例,
#/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:W-D
count=0
while count<3:
num=22
guess_num=int(input("guess number:"))
if guess_num > num:
print("Too bigger!")
elif guess_num < num:
print("Too smaller!")
else:
print("yes, you are right!")
break#后续会提到break作用
count+=1
else:#while条件中不满足走该逻辑
print("you have tried too many times!")
结果:
guess number:33
Too bigger!
guess number:33
Too bigger!
guess number:33
Too bigger!
you have tried too many times!
while之无敌语法
十一、for循环 |
for循环的条件:循环条件是一个可迭代的对象,如数组,字典,文件对象。
基本语法:
for 变量 in 可迭代的对象:
pass eg:
for i in range(0,10,2):
#0代表起始位置,2代表步长,10是结束位置,但不包括。
print(i)
结果:
0
2
4
6
8
十二、break、continue |
1.break在循环中的作用是跳出循环,循环终止,如我们前面列子中的,输入正确的数字,就停止循环。
2.continue在循环中的作用是跳出本次循环,循环还会继续。
continue应用场景:
1-10个数中循环打印,遇到5不打印。
for i in range(0,11,):
if i==5:
continue#当循环到5跳出本次循环不执行print
print(i)