Python
一.Python简史
Python是一种面向对象,解释型计算机程序设计语言,由Guido Van Rossum于1989年发明,第一个公开发行版于1990年。2001年发布python2.0版本,2010年获年度Tiobe编程语言大奖,2013年发布python3.x版本。需要注意的是:python2.7是python2.x系列最后一个版本Python是纯粹的自由软件,源代码和解释器cpython遵循CPL(GUN General Public License)协议。Python语法简介清晰,特色之一是强制使用空白符(whilte space)作为语句缩进。Python具有强大和丰富的库,能够把其他语言制作的各种模块,(尤其是C/C++)很轻松连接在一块。
1.1Python主要特点:
- 简单
- 易学
- 免费,开源
- 高层语言
- 可移植性
- 解释性
- 面向对象
- 可扩展性
- 可嵌入性
- 丰富的库
- 规范的代码
1.2.Python安装
我们这里说的是linux下的安装,系统默认安装python,在Terminal中直接执行命令:python;
这里我们可以看到系统默认安装的版本是python2.7.5
在python里没有自动补齐作用,我们可以安装ipython,其实现了自动补齐。Ipython是一个非常强大的python交互shell,通过它可以非常方便的开发,调试python。Ipython须从网上下载软件。对于ipython的安装这里我就不再细说了。
Pycharm
下载pychrm社区版本,安装使用。
1.21.Pycharm 中自动添加解释器及相关信息。
打开pycharm——> 选中 file中的setting——>选择Editor中file and code templates——> 选中python script然后再添加信息:
添加完信息后保存。
以后我们的实验操作均会再pycharm中进行操作。
二.Python基本数据类型
2.1.输入输出
Print + 字符串.......
Raw_input输入的内容为字符类型;
Input 输入的内容为数值类型
测试练习1:求三门成绩的平均值:
#!/usr/bin/env python
#coding:utf-8
from __future__ import division
#导入除法模块,是因为在python2.X的版本里,除法是整除,不会取到小数
chinese = input ("score1:")
math = input ("score2:")
english = input ("score3:")
avg = (chinese+math+english)/3
print "anverage score is %s" %(avg)
在往往求平均值时,我们通常只须保留两位小数,故我们要调整输出为:
print "anverage score is %.2f" %(avg)
块代码注释:三引号!/usr/bin/env python
#coding:utf-8
"""
行代码注释:# <快捷键:ctrl + / >
2.2.字符串的格式化符号:
%f 小数, 浮点数
%.2f 保留两位小数点的浮点数
%d ×××数
%s 字符串
%o 八进制
%x 十六进制
实例1:
- 生成×××数字,不够的部分用0填充:(这里是在shell终端中使用ipython操作)
In [1]: "%.3d" %(1) Out[1]: '001'
2.10代表生成字符串的宽度;
In [2]: "%10.3d" %(1) Out[2]: ' 001'
3.显示字符串有%号需要转义;
In [3]: "%.2f%%" %(30) Out[3]: '30.00%'
2.3. 变量
变量是内存中的一块区域
变量的命名:变量名由字母,数字,下划线组成;变量名只能以字母或者下划线开头;
Python中地址变量和c语言正好相反,一条数据包含多个标签:
实例2.
In [4]: a=1
In [5]: b=1
In [6]: id(a)
Out[6]: 26836072
In [8]: id(b)
Out[8]: 26836072
测试练习:
输入变量名必须以字母或下划线开头,否则报错:
#!/usr/bin/env python
#coding:utf-8
while True:
s = raw_input("变量名:")
if s[0].isalpha() or s[0] == "_":
for i in s[1:]:
if i.isalnum() or i == "_":
continue
else:
print "%s 变量名不合法!Error: 变量名后面的字符" % (s)
break
else:
print "%s变量名合法" % (s)
else:
print "%s 变量名不合法! Error: 变量名第一个字符" % (s)
2.4运算符和表达式
2.41.算术运算符:+,-,*,**, /, %, //
实例3.
In [12]: print 5.0/2
2.5
In [13]: print 5/2
2
In [14]: print 8//2
4
In [15]: print 2**3
8
2.4.2.赋值运算符:=, +=, -=, /=, *=, %=
实例4.
In [16]: a =1; a+=3
In [17]: print a
4
In [18]: a =1; a-=1
In [19]: print a
0
In [22]: a =2; a*=8
In [23]: print a
16
In [24]: a =10; a/=2
In [25]: print a
5
2.4.3.关系运算符: >, >=, <, <=, !=, ==
实例5.
In [26]: 1>2
Out[26]: False
In [27]: 1>2 == False
Out[27]: False
In [28]: (1>2) == False
Out[28]: True
2.5.数值类型
2.5.1. 整型,长整型
实例6.
In [29]: anInt = 12
In [30]: print type(anInt)
In [31]: aLong = 12L
In [32]: print type(aLong)
#整型和长整型相加
In [33]: print type(anInt + aLong)
2.5.2.float 浮点型,类似于c语言中的double类型
实例7.
In [34]: aFloat = 12.34
In [35]: print type(aFloat)
In [36]: bFloat = 0.12E11
In [37]: print bFloat
12000000000.0
2.5.3 complex 复数型
实例8.
In [38]: aComplex = 2+3j
In [39]: print aComplex.real #输出实部
2.0
In [40]: print aComplex.imag #输出虚部
3.0
In [41]: print aComplex.conjugate() #输出共轭复数
(2-3j)
In [42]: print type(aComplex)
数值类型是不可变数据类型
In [43]: print abs(-1)
1
In [44]: print coerce(1, 1.0)
(1.0, 1.0)
In [45]: print divmod(5, 2)
(2, 1)
In [46]: print pow(2,3)
8
In [47]: print round(2.456657,2)
2.46
测试练习2.
判断闰年?
分析:这个年份能被4整除但不能被100整除,或者能被400整除,那么就是闰年。
#!/usr/bin/env python
#coding:utf-8
Year = input ("year:")
print (Year % 4 == 0 and Year % 100 != 0) or (Year % 400 == 0)
2.6 if判断语句
Python中的判断语句:注意缩进
If 表达式:
If-suite
If 表达式:
If-suite
else:
else-suite
测试练习3.
用if语句判断闰年
#!/usr/bin/env python
#coding:utf-8
year = input ("year:")
exp = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
if exp == 1:
print "%s 是闰年" %(year)
else:
print "%s 不是闰年" %(year)
测试练习4.
用户登陆ATM系统
- 已知用户名和密码
- 判断用户和密码是否正确;
如果正确,输出用户登陆成功;
如果不正确,输出登陆失败;
#!/usr/bin/env python
#conding = utf-8
import getpass
#数据库中存储的用户名和密码;
user = "root"
passwd = "redhat"
username = raw_input("用户名:")
password = getpass.getpass("密码:")
if username == user and password == passwd:
print "%s 用户登陆成功!" %(user)
print """
ATM 管理系统
1.取款
2.存款
3.余额查询
4.退出
"""
choice = input("请输入您的选择:")
if choice == 1:
pass
elif choice == 2:
pass
elif choice == 3:
pass
elif choice == 4:
exit(0)
else:
print "请输入正确的选择!"
else:
print "%s 用户登录失败!" %(username)
测试结果:
因为导入getpass模块,我们必须在终端进行测试:
测试练习5:if_模拟三目运算符
三目运算符: a>b?a:b <注意:python不支持>
a=1
b=2
Print a if a>b else b
while循环语句
while 表达式:
循环执行语句
while 表达式:
循环执行语句
else:
不符合循环条件执行的语句
死循环:
while True:
死循环的语句
while 1:
死循环的语句
测试练习6:
在测试练习4的基础上,使得用户登陆次数不超过三次,且不选择退出时,不退出登陆页面。
import getpass
#数据库中存储的用户名和密码;
user = "root"
passwd = "redhat"
#已登陆的次数;
trycount = 0
#登陆次数小于3,允许再次登陆;
while trycount < 3:
print "%s次登陆........" %(trycount+1)
username = raw_input("用户名:")
password = getpass.getpass("密码:")
if username == user and password == passwd:
print "%s用户登陆成功!" % (username)
print """
ATM管理系统
1. 取款
2. 存款
3. 查询余额
4. 退出
"""
while 1:
choice = input("请输入你的选择:")
if choice == 1:
print "取款"
elif choice == 2:
print "存款"
elif choice == 3:
print "查询余额"
elif choice == 4:
exit(0)
else:
print "请输入正确的选择!"
else:
print "%s 用户登陆失败!" % (username)
trycount += 1
#登陆次数超过三次,报错;
else:
print "登陆次数超过3次, waiting......"
测试结果:
因为导入getpass模块,我们必须在终端进行测试:
测试练习7:
求(1 10000)内偶数之和,并计算时间戳。
法一:
#!/usr/bin/env python
#coding:utf-8
import time
start_time = time.time()
sum = 0
for i in range(2,10001,2):
sum += i
print sum
end_time = time.time()
print "run %s" % (end_time - start_time)
法二:
#!/usr/bin/env python
#coding:utf-8
import time
start_time = time.time()
i = 2
evensum = 0
while i<=10000:
evensum += i
i += 2
print evensum
end_time = time.time()
print "run%s" %(end_time-start_time)
循环语句中的关键字:break , continue
break: 遇到这个关键字跳出当前循环;不再继续执行循环;
continue:遇到这个关键字跳出本次循环;