码迷,mamicode.com
首页 > 其他好文 > 详细

py基础 001

时间:2016-06-13 17:06:07      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

Python诞生

Python是著名的”龟叔Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
技术分享

Python语法很多来自C,但又受到ABC语言的强烈影响。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进。但这些语法规定让Python容易读。
Guido van Rossum著名的一句话就是Life is short, you need Python,译为:人生苦短,我用Python
技术分享
截至到目前2016年4月28日,Python在Tiobe的排名还是很靠前的,而且近几年来说Python上升的趋势已经超过PHP紧随C#。
技术分享
查询网站:http://www.tiobe.com/tiobe_index?page=index
总之,Python就是非常好非常好非常好的语言,重要的事情说三遍。

Python实现方式

Python身为一门编程语言,但是他是有多种实现方式的,这里的实现指的是符合Python语言规范的Python解释程序以及标准库等。

  • Python的实现方式主要分为三大类
  1. Cpython
  2. PyPy
  3. Jpython、IronPython等等类似的实现方式
  • CPython

这是Python的官方版本,使用C语言实现,使用最为广泛,新的语言特性一般也最先出现在这里。
CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

  • PyPy

Python(RPython Python)的Python实现版本,原理是这样的,PyPy运行在CPython(或者其它实现)之上,用户程序运行在PyPy之上。它的一个目标是成为Python语言自身的试验场,因为可以很容易地修改PyPy解释器的实现(因为它是使用Python写的),PyPy的代码性能是Cpython的五倍以上。

  • 性能对比图

技术分享

  • Jython

Jython是个Python的一种实现方式,Jython编译Python代码为Java字节码,然后由JVM(Java虚拟机)执行,这意味着此时Python程序与Java程序没有区别,只是源代码不一样。此外,它能够导入和使用任何Java类像Python模块。

  • IronPython

IronPython是Python的C#实现,并且它将Python代码编译成C#中间代码(与Jython类似),然后运行,它与.NET语言的互操作性也非常好。

安装Python

Windows安装Python2.7.11

  • 下载Python软件

64位下载地址:https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi
32位下载地址:https://www.python.org/ftp/python/2.7.11/python-2.7.11.msi

  • 安装Python软件

下载下来之后双击安装,安装时一路下一步下一步即可,Windows一贯的作风,默认的安装路径是:C:\Python27

  • 配置环境变量

右键计算机 —> 属性 —> 高级系统设置 —> 高级 —> 环境变量 —> 在第二个内容框中找到变量名为Path的一行,双击 —> Python安装目录追加到变值值中,用;分割
如图:
技术分享python-day01-05
如:原来的值``;C:\python27,切记前面有分号

Windows 10安装后默认会把环境变量配置好。

  • cmd测试

win+r调出运行窗口,然后输入cmd
技术分享python-day01-06
在cmd窗口中输入python指令
技术分享
如果你得到的结果和我一样,那么你就安装好了windows下的python环境

CentOS升级到Python2.7.11

CentOS6.7默认自带Python2.6.6版本,如果你不需要升级到2.7.11请跳过这段,如果需要升级请继续往下看。

  • 下载python2.7.11源码包

下载地址:https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz

1
[root@mosson ~]# wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz

 

  • 安装开发工具包
1
[root@mosson~]# yum -y groupinstall "debugging Tools"
  • 编译安装
1
2
3
4
5
[root@mosson ~]# tar xf Python-2.7.11.tgz
[root@mosson ~]# cd Python-2.7.11
[root@mosson Python-2.7.11]# ./configure -prefix=/usr/local/python2.7.11
[root@mosson Python-2.7.11]# make
[root@mosson Python-2.7.11]# make install
  • 更改配置

创建链接来使系统默认python变为python2.7

1
[root@mosson Python-2.7.11]# ln -fs /usr/local/python2.7.11/bin/python2.7 /usr/bin/python

 

查看Python版本

1
2
[root@mosson Python-2.7.11]# python -V
Python 2.7.11

 

修改yum配置(否则yum无法正常运行)

1
2
3
4
[root@mosson Python-2.7.11]# vim /usr/bin/yum
#!/usr/bin/python
#将第一行改为
#!/usr/bin/python2.6

 

Python简单入门

Hello Word

一般情况下程序猿的第一个小程序都是简单的输出Hello Word!,当然Python也不例外,下面就让我们来用Python输出一句Hello Word!吧!

  • 创建一个以py结尾的文件
1
[root@mosson python_code]# touch hello.py
  • 其内容为
1
2
3
#!/usr/vin/env python

print "Hello Word!"
  • 用Python执行
1
2
[root@mosson python_code]# python hello.py
Hello Word!

输出的内容为Hello Word!,OK,你的第一次一句木有了^_^

Python代码执行流程

技术分享

释意:当Python执行代码的时候,会先把源码读取到内存当中,然后由Cpython进行编译,编译成字节码,最后由Cpython的虚拟机一行一行的解释其内容,再输出到屏幕上,然后释放内存,退出程序。

pyc文件

执行Python代码时,如果导入了其他的.py文件,那么,执行过程中会自动生成一个与其同名的.pyc文件,该文件就是Python解释器编译之后产生的字节码。

代码经过编译可以产生字节码;字节码通过反编译也可以得到代码

指定Python解释器

在Python文件的开头加入以下代码就制定了解释器。

  • 第一种方式
1
#!/usr/bin/python

告诉shell这个脚本用/usr/bin/python执行

  • 第二种方式
1
#!/usr/bin/env python

在操作系统环境不同的情况下制定这个脚本用python来解释。

执行Python文件

执行Python文件的方式有两种

  • 例如hello.py的文件内容为
1
2
#!/usr/bin/env python
print "Life is short, you need Pytho"
  • 第一种执行方式
1
2
[root@mosson python_code]# python my.py
Life is short, you need Pytho

如果使用python my.py这种方式执行,那么#!/usr/bin/python会被忽略,等同于注释。

  • 第二种执行方式
1
2
3
[root@mosson python_code]# chmod +x my.py 
[root@mosson python_code]# ./my.py
Life is short, you need Pytho

如果使用./my.py来执行,那么#!/usr/bin/python则是指定解释器的路径,在执行之前my.py这个文件必须有执行权限。

python my.py 实则就是在my.py文件顶行加入了#!/usr/bin/python

字符编码

python解释器在加载.py文件中的代码时,会对内容进行编码,python2.7内部默认ascii字符,而最新的python3.5默认使用UTF-8。
ascii字符(26个字母,8位表示所有,字符,英文 数字 )
万国码(unicode,最少两个字节,所有的字符,一个中文汉字3个字节表示,占用字节多,浪费空间)
UTF-8(unicode加工:英文特殊字符用八位宝石,中文–24位….,解决unicode所占用的内存)

指定字符编码

python制定字符编码的方式有多种,而编码格式是要写在解释器的下面的,常用的如下面三种:

  • 第一种
1
2
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
  • 第二种
1
2
#!/usr/bin/env python
# -*- coding:utf-8 -*-
  • 第三种
1
2
#!/usr/bin/env python
# coding:utf-8

代码注释

单行注释

单行注释只需要在代码前面加上#

1
# 注释内容

 

多行注释

多行注释用三个单引号或者三个双引号躲起来

1
2
3
"""
注释内容
"""

 

实例

py脚本原文件内容

1
2
3
4
5
6
7
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print "My name is Mosson"
print "I‘m a Python developer"
print "My blog URL: https://xxxxx.me"
print "Life is short, you need Pytho"

源文件输出的内容

1
2
3
4
5
[root@mosson python_code]# python note.py 
My name is Ansheng
I‘m a Python developer
My blog URL: https://xxxxx.me
Life is short, you need Python

 

  • 单行注释演示

  • 代码改为

1
2
3
4
5
6
7
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print "My name is Mosson"
print "I‘m a Python developer"
print "My blog URL: https://xxxxx.me"
#print "Life is short, you need Python"
  • 执行结果
1
2
3
4
[root@mosson python_code]# python note.py 
My name is Mosson
I‘m a Python developer
My blog URL: https://xxxxx.me

结果Life is short, you need Pythoprint出来

  • 多行注释演示

  • 代码改为

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print "My name is Mosson"
"""
print "I‘m a Python developer"
print "My blog URL: https://xxxxx.me"
print "Life is short, you need Pytho"
"""
  • 执行结果
1
2
[root@ansheng python_code]# python note.py 
My name is Mosson

结果I‘m a Python developerMy blog URL: https://ansheng.meLife is short, you need Pytho都没有print出来

print输出多行

既然用单个单引号或者多引号可以注释多行,那么能不能print多行呢?

  • 代码
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print """
My name is Mosson
I‘m a Python developer
My blog URL: https://xxxxx.me
Life is short, you need Python.
"""
  • 执行结果
1
2
3
4
5
6
[root@ansheng python_code]# python note.py 

My name is Mosson
I‘m a Python developer
My blog URL: https://xxxxx.me
Life is short, you need Python.

显然这是可以得 ^_^

变量

变量的命名规则:

  1. 变量名只能包含数字、字幕、下划线
  2. 不能以数字开头
  3. 变量名不能使python内部的关键字
  • Python内部已占用的关键字
[‘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‘]

定义变量

1
2
3
>>> name = "mosson" 
>>> print name
mosson

基本的数据类型

  • 字符串(str)

定义字符串类型是需要用单引号或者双引号包起来的

1
2
3
>>> name = "mosson"
>>> print(type(name))
<type ‘str‘>

 

或者

1
2
3
>>> name = ‘mosson‘
>>> print(type(name))
<type ‘str‘>

 

  • 数字(int)

证书类型定义的时候变量名后面可以直接跟数字,不要用双引号包起来。

1
2
3
>>> age = 20
>>> print(type(age))
<type ‘int‘>

 

  • 布尔值()

布尔值就只有True(真)Flash(假)

1
2
3
4
5
6
>>> if True:
... print("0")
... else:
... print("1")
...
0

 

解释:如果为真则输出0,否则输出1

流程控制

if语句

if语句是用来检查一个条件:如果条件为真(true),我们运行一个语句块(你为if块),否则(else),我们执行另一个语句块(称为else块)。else子语句是可选的。

单条件

例题:如果num变量大于1,那么就输出num大,否则就输出num小,num值为5。

  • 代码
1
2
3
4
5
6
7
8
#!/usr/bin/env python
# -*- coding:utf-8 -*-
num = 5

if num > 1:
print("num大")
else:
print("num小")
  • 结果
1
2
[root@mosson python_code]# python num.py
num大

多条件

例题:如果num变量大于5,那么就输出num大于5,如果num变量小于5,那么就输出num小于5,否则就输出num等于5,num值为5。

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
# -*- coding:utf-8 -*-
num = 5

if num > 5:
print("num大于5")
elif num < 5:
print("num小于5")
else:
print("num等于5")

 

  • 结果
1
2
[root@mosson python_code]# python num.py
num等于5

while循环

while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
执行流程图如下
技术分享

  • 实例:

定义一个变量count,默认值为1,然后进去while循环,让其输出1-10,如果大于10则退出。

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

count = 1

print "Start...."

while count < 11:
print "The count is:",count
count += 1

print "End...."

 

  • 执行结果如下
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@mosson python_code]# python while.py
Start....
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
The count is: 9
The count is: 10
End....

break

跳出当前循环体,下面代码不再执行,继续执行循环后面的代码

  • 实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

count = 1

print "Start...."

while count < 11:
if count == 5: #如果count等于5,那么我就退出当前循环体
break
print "The count is:",count
count += 1

print "End...."
  • 输出结果
1
2
3
4
5
6
7
[root@mosson python_code]# python while.py
Start....
The count is: 1
The count is: 2
The count is: 3
The count is: 4
End....

continue

跳出本次循环,继续下一次循环
代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

count = 1

print "Start...."

while count < 11:
if count == 5: #如果count等于5,那么我就让其+1,然后不执行下面的代码,继续下一次循环
count += 1
continue
print "The count is:",count
count += 1

print "End...."

 

  • 输出结果
1
2
3
4
5
6
7
8
9
10
11
12
[root@mosson python_code]# python while.py
Start....
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 6
The count is: 7
The count is: 8
The count is: 9
The count is: 10
End....

条件判断

条件判断适用于ifwhile等。

  • 等于
1
if 1 == 1:
  • 不等于
1
if 1 != 2:
  • 小于
1
if 1 < 1
  • 大于
1
if 1 > 1:
  • 并且
1
if 1 == 1 and 1 > 0:
  • 或者
1
if 2 > 1 or 2 = 2:
  • 永远为真
1
if True:
  • 永远为假
1
if Flase:

交互式输入

Python的交互式输入使用的是raw_input()input()函数实现的,注意在Python2.7.x版本的时候可以使用raw_input()input()函数,但是在Python3.5.x版本的时候就没有raw_input()函数了,只能够使用input()

  • 例题:用户在执行脚本的时候,让他输入自己的名字,然后打印出来。

代码

1
2
3
4
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
username = raw_input("请输入你的名字:")
print "你的名字是:",username

 

  • 执行结果
1
2
3
[root@mosson python_code]# python input.py
请输入你的名字:安生 #输入你的名字
你的名字是: 安生 #打印出你的名字

练习题

使用while循环输入1 2 3 4 5 6 8 9 10

思路:首先定义一个变量num,值为1,然后用while循环输出1-10的内容,在while循环内加入if语句,判断当前的值如果是7,那么就让7+1,加完之后跳出本次循环,不执行下面的print,7跳出本次循环之后,第二轮的时候num就是8了,而不是7.

  • 代码
1
2
3
4
5
6
7
8
9
# _*_ coding:utf-8 _*_

num = 1
while num < 11:
if num == 7:
num += 1
continue
print(num)
num += 1
  • 输出内容为:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
8
9
10

求1-100的所有数的和

思路:定义两个变量,分别是count和num,利用while语句循环输出1-100,然后每次就让count+num,这样循环一百次之后相加的结果就是1到100的和了。

  • 代码
1
2
3
4
5
6
7
8
9
# _*_ coding:utf-8 _*_

count = 1
num = 0
while count < 101:
num = num + count
count += 1

print(num)
  • 输出结果
1
5050

输出 1-100 内的所有奇数

思路: 利用%整数相除的余,如果余数是1那么当前的count就是奇数,如果余0,那么当前的count就是偶数。

  • 代码
1
2
3
4
5
6
7
8
9
# _*_ coding:utf-8 _*_

count = 1

while count < 101:
num=count%2
if num == 1:
print(count)
count += 1
  • 结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
79
81
83
85
87
89
91
93
95
97
99

输出 1-100 内的所有偶数

  • 代码
1
2
3
4
5
6
7
8
9
# _*_ coding:utf-8 _*_

count = 1

while count < 101:
num=count%2
if num == 0:
print(count)
count += 1
  • 结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100

求1-2+3-4+5 … 99的所有数的和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# _*_ coding:utf-8 _*_

count = 1

while count < 100:
if count == 1:
num = count
elif count%2 == 1:
num = num + count
elif count%2 == 0:
num = num - count
count += 1

print(num)
  • 结果
1
50

用户登陆

需求:写一个脚本,用户执行脚本的时候输入用户名和密码,如果用户米或者密码连续三次输入错误则退出,如果输入正确则显示登陆成功,然后退出。

用户名和密码自己定义

  • 图解用户登录流程

技术分享python-day01-10

  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# _*_ coding:utf-8 _*_

import getpass

# username:mosson
# userpass:666666

count = 3

while count > 0:
username = raw_input("User Name:")
userpass = getpass.getpass("pass:")
if username == "ansheng" and userpass == "666666":
print "User:",username,",login successful!"
break
else:
count -= 1
if count != 0:
print "Login failed",count
else:
print("The maximum number of login!")
  • 登陆成功演示
1
2
3
User Name:mosson  #输入用户名
pass: #输入密码,密码是看不到的,因为调用了getpass模块
User: ansheng ,login successful! #显示用户ansheng,登陆成功
  • 登陆失败演示
1
2
3
4
5
6
7
8
9
User Name:as
pass:
Login failed 2
User Name:an
pass:
Login failed 1
User Name:ansea
pass:
The maximum number of login!

账号或密码连续三次输入错误则退出程序,并且每次提醒用户升序多少次登陆的机会。

py基础 001

标签:

原文地址:http://www.cnblogs.com/mosson/p/5581061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!