python入门编程之基础
Python, 是一种面向对象、解释型计算机程序设计语言。Python语法简洁清晰,特色之一是强制用空白符作为语句缩进。Python的设计哲学是“优雅”、“明确”、“简单”。
Python是一门具有强类型(即变量类型是强制要求的)、动态性、隐式类型(不需要做变量声明)、大小写敏感(var和VAR代表了不同的变量)以及面向对象(一切皆为对象)等特点的编程语言。
Python可用来干嘛?
系统编程 :提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。
图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。
数学处理:NumPy扩展提供大量与许多标准数学库的接口。
文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。
网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。
Web编程:应用的开发语言,支持最新的XML技术。
1.Python基础
1.1Python数据类型 操作符
操作符:
标准算术操作符:+ - * / //取整 %取余 **乘方
标准比较操作符:< <= > >= == != <>
逻辑操作符:and or not
基本数值类型:
int (有符号整数): 通常被称为只是整数或整数,是正或负整数,不带小数点。
long (长整数 ): 或长,是无限大的整数,这样写整数,后面跟着一个大写或小写的L。
float (浮点实数值) : 或浮点数,表示实数,并写入一个小数点分隔的整数部分和小数部分。浮点数也可以是科学记数法,用e或E表示的功率10 (2.5e2 = 2.5 x 102 = 250).
complex (复数) : 形式如 a + bJ,其中a和b是浮点和J(或j)表示-1的平方根(这是一个虚数)。 a是数的实部,b是虚部。Python编程不使用复杂的数字。
数据类型-字符串:
Python中可以使用一对单引号''或者双引号""生成字符串。
字符串是属于不可变数据类型,就是通过字符串方法返回的都是一个新的字符串。
索引
对于一个有序序列,可以通过索引的方法来访问对应位置的值。字符串便是一个有序序列的例子,Python使用 [] 来对有序序列进行索引。索引是从 0 开始的,Python还引 入了负索引值的用法,即从后向前开始计数。
s = "hello world"
s[0] 输出“h”
s[-2]输出“l”
分片
分片用来从序列中提取出想要的子序列,其用法为:var[lower:upper:step]
其范围包括 lower ,但不包括 upper ,即 [lower, upper), step 表示取值间隔大小,如果没有默认为1。
s = "hello world"
s[1:3] 输出“el”
s[1:-2]输出“ello wor”
每隔两个取一个值:
s[::2] 输出“hlowrd”
跟java一样Python也有很多对字符串进行操作的方法:
s.split(),将s按照空格(包括多个空格,制表符\t,换行符\n等)分割,并返回所有分割得到的字符串。
line = "1 2 3 4 5"
numbers = line.split()
print numbers 输出['1', '2', '3', '4', '5']
s.replace(part1, part2),将字符串s中指定的部分part1替换成想要的部分part2,并返回新的字符串。
s = "hello world"
s.replace('world', 'python')
输出 “hello python”
s.upper(),方法返回一个将s中的字母全部大写的新字符串。
s.lower(),方法返回一个将s中的字母全部小写的新字符串。
s.strip(),返回一个将s两端的多余空格除去的新字符串。
s.lstrip(),返回一个将s开头的多余空格除去的新字符串。
s.rstrip(),返回一个将s结尾的多余空格除去的新字符串。
当然还有很多的方法
强制转换为字符串:
str(ob),强制将ob转化成字符串。
repr(ob),也是强制将ob转化成字符串
数据类型-列表:
在Python中,列表是一个有序的序列。
列表用一对 [] 生成,中间的元素用 , 隔开,其中的元素不需要是同一类型,同时列表的长度也不固定。
列表通过[]来定义:
a = [1, 2.0, 'hello']
print a
列表操作,与字符串一样列表也支持很多操作,列表属于可变数据类型,可以通过索引来改变值。
以下是关于列表操作的一些方法:
count(ob) ,返回列表中元素 ob 出现的次数。
index(ob) ,返回列表中元素 ob 第一次出现的索引位置,如果 ob 不在列表中会报错。
append(ob) ,将元素 ob 添加到列表 的最后。
extend(lst), 将序列 lst 的元素依次添加到列表的最后
insert(idx, ob), 在索引 idx 处插入 ob ,之后的元素依次后移。
remove(ob), 会将列表中第一个出现的 ob 删除,如果 ob 不在列表中会报错。
pop(idx), 会将索引 idx 处的元素删除,并返回这个元素。
sort() ,会将列表中的元素按照一定的规则排序
reverse() ,会将列表中的元素从后向前排列。
数据类型-元祖:
与列表相似,元组Tuple也是个有序序列,但是元组是不可变的,用()生成。
t = (10, 11, 12, 13, 14)
列表转换为元组:
a = [10, 11, 12, 13, 14]
tuple(a)
由于元组是不可变的,所以只能有一些不可变的方法,例如计算元素个数 count 和元素位置 index ,用法与列表一样。
a.count(10)
a.index(12)
列表与元组的速度比较:
元组的生成速度会比列表快很多,迭代速度快一点,索引速度差不多。
数据类型-字典:
字典 dictionary ,在一些编程语言中也称为 hash , map ,是一种由键值对组成的数据结构。
Python使用 `{}` 或者 `dict()` 来创建一个空的字典:
a = {}
a = dict()
出于hash的目的,Python中要求这些键值对的键必须是不可变的,而值可以是任意的Python对象。
字典方法:
d.get(key, default = None)返回字典中键 key 对应的值,如果没有这个键,返回 default 指定的值(默认是 None )
d.pop 方法删除并返回字典中键 key 对应的值,如果没有这个键,返回 default 指定的值(默认是 None )
d.keys()返回一个由所有键组成的列表;
d.values() 返回一个由所有值组成的列表;
d.items() 返回一个由所有键值对元组组成的列表;
数据类型-集合:
列表和字符串都是一种有序序列,而集合 set 是一种无序的序列。
因为集合是无序的,所以当集合中存在两个同样的元素的时候,Python只会保存其中的一个(唯一性);同时为了确保其中不包含同样的元素,集合中放入的元素只能是不可变的对象(确定性)。
可以用set()函数或者{}方式生成集合:
a = set([1, 2, 3, 1])
a = {1, 2, 3, 1}
Python还提供了一种叫做不可变集合的数据结构,与集合不同的是,不可变集合一旦创建就不可以改变。
不可变集合的一个主要应用是用来作为字典的键。
使用 frozenset 来进行创建:
s = frozenset([1, 2, 3, 'a', 1])
集合方法:
s.add(a),用来向集合添加单个元素。
s.update(seq),用来向集合添加多个元素。
s.remove(ob),从集合s中移除元素ob,如果不存在会报错。
s.pop(),由于集合没有顺序,不能像列表一样按照位置弹出元素,所以pop 方法删除并返回集合中任意一个元素,如果集合中没有元素会报错。
1.2Python判断语句 循环语句
循环语句:while
while expression: # expression 条件表达式
while_suite # 根据条件循环执行的语句
i = 0
total = 0
while i < 1000000:
total += i
i += 1
print total
循环语句:for:
for循环会遍历完<sequence>中所有元素为止
for <variable> in <sequence>:
<indented block of code>
Python中的for循环与java的for循环不太一样,不是计数循环,更像迭代循环,如:
total = 0
for i in xrange(100000):
total += i
print total
continue 语句:遇到 continue 的时候,程序会返回到循环的最开始重新执行。
values = [7, 6, 4, 7, 19, 2, 1]
for i in values:
if i % 2 != 0:
# 忽略奇数
continue
print i/2
break 语句:遇到 break 的时候,程序会跳出循环,不管循环条件是不是满足。
条件语句:if elif else
if expression1: # 蓝色部分可以单独用
if_suite
elif expression2: # 绿色部分可以省略,也可以重复多个
elif_suite
else expression3: # 用elif,最后必须有else
else_suite # Python没有switch-case
1.3Python文件读写操作
读文件:
使用 open 函数或者 file 函数来读文件,使用文件名的字符串作为输入参数
f = file('test.txt')
f = open('test.txt')
print f.read() #读取文件所有内容
print f.readlines() #按照行读入内容
f.close() #读完文件需要把文件关闭
import os #导入os包
os.remove('test.txt') #删除刚才创建的文件
写文件:
使用 open 函数或者 file 函数来写文件,使用文件名的字符串作为输入参数,使用 w 模式时如果文件不存在会被创建,如果文件已经存在, w 模式会覆盖之前写的所 有内容。还有追加模式 a ,追加模式不会覆盖之前已经写入的内容,还可以使用读写模式 w+。
# 默认 r# r:读取;w:写入;a:添加;+:读写;b:二进制访问
s=open("e://data.txt",'w')
s.write("hello")
s.close()
print open("e://data.txt").read()
1.3Python异常 try& except 块
异常捕捉:
Python编译时会检查语法错误,运行时检测其他错误。
当遇到错误,Python解释器就引发异常,并显示详细信息。
try:
…… # 可能会出现异常的代码
……
except IOError, e:
print ‘出错原因’, e
finally #不管 try 块有没有异常, finally 块的内容总是会被执行,而且会在抛出异常前执行
也可以用raise有意引发一个异常
自定义异常:
定义了一个继承自 ValueError 的异常类,异常类一般接收一个字符串作为输入,并把这个字符串当作异常信息
class CommandError(ValueError):
pass
python的基础操作大概就是这些,如果有错误或者有遗漏希望大家指出。