Python实战教程(一)

背景介绍

最近在学习flask,正好温习一下python基础,写三期的python基础教程,带你快速掌握python基础。这里不会有太多介绍和废话,满满干货,看完就能从网络工程师转行写python。。。。哈哈哈

环境准备

安装python(以centos6为例,自带Python为2.6,centos7默认就是安装python2.7忽略此步)

软件包安装——python的安装配置

yum install openssl-devel openss python-devel zlib*  
wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
tar zxvf Python-2.7.5.tgz
cd Python-2.7.5
./configure --prefix=/usr/local/python27  
make

Python环境变量配置

cd /usr/bin
mv python python26  # 将老版本的Python执行文件重命名,由于yum依赖的是老版本,不能删除
ln -s /usr/local/python27/bin/python   /usr/bin/python   # 将新版本Python做软连接或者拷贝
which python    # 显示当前python执行文件的地址           
python -V            # 显示当前使用的版本信息
whereis python   # 显示所有不同版本的所有python信息

yum文件的修改

cat /usr/bin/yum
把文件(#!/usr/bin/python)首行改成:
#!/usr/bin/python26     # 修改为原来python版本

上面的方法直接修改了整个系统的python可能会影响到别人的环境,下面是更优雅的方式

mkdir -p  $HOME/apps/python27
tar zxvf  Python-2.7.5.tgz
cd   Python-2.7.5
 ./configure   --prefix=$HOME/apps/python27  --with-zlib-dir=/usr/local/lib
make && make install 
cat ~/.rc       # 将家目录的python加入到环境变量优先加载
export PATH=$HOME/apps/python27/bin:$PATH
source ~/.rc 
which python       # 成功
~/apps/python27/bin/python

Python入门:字符串和变量

进入python命令行:

在命令行里面输入python可以进入python命令行

[root@instance-5ql4qny2 ~]# python
Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>

用Python进行加减乘除:

>>> print (19+93-10)/2*5
255
>>>

字符串的拼接:

字符串拼接用 + 来连接,例如:

>>> print 'hello'+'world'
helloworld
>>>

定义变量:

>>> a='hello world'
>>> print a
hello world
>>>

交互系统:raw_input()

>>> a=raw_input('输入变量a的值:')
输入变量a的值:hello world
>>> print a
hello world
>>>

总结

新建一个test.py的文件
vim test.py, 内容如下:

\#!/usr/bin/env python
\# -*- coding:utf-8 -*-
a=raw_input('请输入你的名字')
print a+',您好!'

运行结果:

[root@instance-5ql4qny2 ~]# python test.py 
请输入你的名字老王
老王,您好!

这里说下#!/usr/bin/env python 是为了指定python的路径,加了这个之后,我们chmod 755 test.py,就可以直接执行test.py
如下:

[root@instance-5ql4qny2 ~]# chmod 755 test.py 
[root@instance-5ql4qny2 ~]# ./test.py
请输入你的名字老萧
老萧,您好!
[root@instance-5ql4qny2 ~]#

# -- coding:utf-8 --这个是因为python默认是ascii码不支持中文,加上这个就能支持中文了。

字符串常用功能

格式化输出

Python一共有两种格式化输出语法:
一种是以’%’分隔格式化字符串与参数,%s传递字符串,%d传递数字

>>> '%s%s%s,hi %s'%('hello',' ','world','jackcheng')
'hello world,hi jackcheng'
>>>

另一种用.format分割格式化字符串与参数

>>> '{0}{2}{1}'.format('hello','world',' ')
'hello world'
>>>

第一种方式还可以指定浮点数的精度,例如

>>> '%.3f'%3.1415926
'3.142'
>>>

Python格式化字符串的替代符以及含义

符 号 说 明
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g 根据值的大小决定使用%f活%e
%G 作用同%g,根据值的大小决定使用%f活%e
%p 用十六进制数格式化变量的地址

查看字符串长度

需要查看字符串长度的时候用len()命令,可以直接返回字符串长度:

>>> name='jackcheng'
>>> len(name)
9
>>>

变量名称后面跟.strip()可以消除变量两侧的空格,如果想指定消除变量左边或右边的空格,可分别使用.lstrip()和.rstrip(),如果想消除其他符号,可以需要消除的符号填进()中,例如消除回车,可使用变量名.strip(\n)。

>>> name='jackcheng       '
>>> name.strip()
'jackcheng'
>>>

字符串大小写转换

转换成大写字符使用变量名.upper(),转换成小写字符使用变量名.lower()

>>> name='jackcheng'
>>> name.upper()
'JACKCHENG'
>>> name.upper().lower()
'jackcheng'
>>>

string、随机数模块和join()

string模块,string.letters可将26个字母按大小写方式返回

>>> import string
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>>

随机数模块,ramdom.saple(),返回随机字符,可指定字符串范围内和数量。

>>> import random
>>> random.sample("asdhiahuiewghurjbnnxcoihvi",5)
['u', 'n', 'v', 'c', 'n']
>>>

join()
语法: ‘A’.join(B)
参数说明:
A:分隔符。可以为空
B:要连接的元素序列、字符串、元组、字典
上面的语法即:以A作为分隔符,将B所有的元素合并成一个新的字符串
返回值:返回一个以分隔符A连接各个元素后生成的字符串
对字符串进行操作

>>> name='jackcheng'
>>> '|'.join(name)
'j|a|c|k|c|h|e|n|g'
>>>

结合使用:””.join(random.sample(string.letters,4))

>>> "".join(random.sample(string.letters,4))
'WEUI'

if、else和elif语句

if else 语句:

if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。 else 从句是可选的。

elif语句:

elif语句允许检查多个表达式是否为TRUE,并在其中一个条件求值为TRUE时立即执行对应代码块。
与else语句类似,elif语句是可选的。 但是,与else语句不同的是,else语句最多可以有一个语句,在if之后可以有任意数量的elif语句。

练习:用户登录

输入用户名和密码,根据输入结果判断,并返回相应的提示信息

  1. 判断用户是否存在,如果不存在直接返回错误
  2. 如果存在,则验证密码
    2.1 密码错误,直接退出
    2.2 密码正确,成功登录
  3. 如果不存在,直接退出

vim denglu.py,内容如下

\#!/usr/bin/env python
\#-*- coding:utf-8 -*-

name = raw_input("请输入用户名: ")
if name == 'jackcheng':
    pwd = raw_input("请输入密码: ")
    if pwd == '12345678':
        print "欢迎%s"%name
    else:
        print "密码错误"
else:
    print "对不起,%s未注册"%name

执行如下:

[root@instance-5ql4qny2 ~]# chmod 755 denglu.py 
[root@instance-5ql4qny2 ~]# ./denglu.py 
请输入用户名: jackcheng
请输入密码: 123
密码错误
[root@instance-5ql4qny2 ~]# ./denglu.py 
请输入用户名: jackcheng
请输入密码: 12345678
欢迎jackcheng
[root@instance-5ql4qny2 ~]#

while语句:

while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

while 判断条件如果为真则只需下面语句:
    执行语句……

1.5. 练习:数字判断

  1. 循环输入数字并验证数字是否是“25“
  2. 如果输入的数字不对,则继续输入,并且提示输入的数字大于还是小于指定数字:太了,或者小了
  3. 可以连续输入8次,输入正确或连续错误8次均退出程序,并提示相应信息
\#!/usr/bin/env python
\# -*- coding:utf8 -*-

count=8 #定义次数变量为8
while count > 0:
      n = int(raw_input('请输入一个要猜的数字: '))
      count -= 1 #每猜一次,次数减一,格式为-=n,+=n等同与减n,加n操作
      # 默认这个被猜的数字为25
      if n > 25:
          print ("大了,再猜,你还有%d次机会")%count
      elif n < 25:
          print ("小了,再猜,你还有%d次机会")%count
      else:
          print ("对了!!!就是%d")%n
          break #break是强制退出while循环,continue是退出此次循环,下次继续
if count == 0:
      print "机会用完了!"

上面程序中#表示注释,#后面的字符python不会去执行,
a+=2等同与a=a+2.
执行结果如下:

[root@instance-5ql4qny2 ~]# chmod 755 shuzipanduan.py 
[root@instance-5ql4qny2 ~]# ./shuzipanduan.py 
请输入一个要猜的数字: 40
大了,再猜,你还有7次机会
请输入一个要猜的数字: 20
小了,再猜,你还有6次机会
请输入一个要猜的数字: 30
大了,再猜,你还有5次机会
请输入一个要猜的数字: 25
对了!!!就是25
[root@instance-5ql4qny2 ~]#

Python运行中,判断异常后怎么办呢,异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置。下面介绍python中获取异常信息的方法,这里获取异常(Exception)信息采用try…except…程序结构。

>>> try :
...     1/0
... except Exception,e:
...     print e
... 
integer division or modulo by zero
>>>

Python异常处理语法的规则是:

◆执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。

◆如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。

◆如果引发的异常不匹配第一个except,则会搜索第二个 except,允许编写的except数量没有限制。

OK,第一期就写这么多。哈哈哈