背景介绍
最近在学习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语句。
练习:用户登录
输入用户名和密码,根据输入结果判断,并返回相应的提示信息
- 判断用户是否存在,如果不存在直接返回错误
- 如果存在,则验证密码
2.1 密码错误,直接退出
2.2 密码正确,成功登录 - 如果不存在,直接退出
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. 练习:数字判断
- 循环输入数字并验证数字是否是“25“
- 如果输入的数字不对,则继续输入,并且提示输入的数字大于还是小于指定数字:太了,或者小了
- 可以连续输入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,第一期就写这么多。哈哈哈