Python学习基础笔记

1.numeric(10,2)长度为10,小数位为2的浮点数

2.bit字型,0或者1

1.编辑器:可以用自己带的编辑器python shell,也可以用网上的subline或者notepad++,不可以用带格式的文本(比如记事本或者word等带文本格式的编辑器),在文本编辑的过程中,单引号双引号使用保持一致

 

2.Python是一种解释型,编译性、互动性、面向对象、动态数据类型的高级程序设计语言。

    使用缩进来写模块,不是用大括号{}来控制类,函数以及其他的逻辑判断

#coding=utf-8 默认编码是utf-8,所有的字符串都是unicode字符串,等号的两边不能有空格

#作者

#日期

 

3.keyword

print ('hello world');print('hello');

python>>>import keyword>>>keywordkwlist   ['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']

python中如果同一语句太长,换行通过在行位加反斜杠连接(\),如果是在括号(){}[]内的语句则不需要使用反斜杠

 

4.python中的数据类型

number(数字)string(字符串)list(列表)tuple(元组)sets(集合)dictionary(字典)

    夫说可以用a+bj,或者complex(a,b)表示

python 中数的数据类型:整型int(1)、浮点数float(1.23,3E-2)和complex复数(2+3j)布尔值(bool)

可以用del语句删除一些对象引用。

del语法:del var1[,var2[,var3,[....,varN]]]

               eg: del var;del var_a,var_b

 

5.字符串

str = 'Runoob'

print 语句中可以使用运算符 eg:print(a+b)

Print type(变量)输出的是变量类型

print (str)          # 输出字符串

print (str[0:-1])   # 输出第一个个到最后一个的所有字符

print (str[0])      # 输出字符串第一个字符

print (str[2:5])    # 输出从第三个开始到第五个的字符

print (str[2:])     # 输出从第三个开始的后的所有字符

print (str * 2)     # 输出字符串两次

print (str +"TEST") # 连接字符串

print'''

line1

line2

line3            #打印多行字符串使用三个引号,等同于print'line1\nline2\nline3\n'

 

6.pycharm设置编码(注册之后更新,可以与svn同步更新,subversion.):

        第一步:file>Settings,输入框搜索encoding

        第二步:Editor>File encoding

        第三步:将IDE Encoding 和 Project Encoding 设置为utf-8,

 

7.python变量命名: 使用下划线,字母或者数字组成标识符,但是不能以数字开头,以下划线开头的有特殊意义,缩进和空格要严格一致不然报错,标识符对大小写敏感,如果是多个字符,使用_作为连接

#  单行注释

'''多行注释,三个单引号'''

字符串十一单引号或者双引号括起来的任意文本,转义字符在引号中也编译,如果不想让反斜杠发生转义,可以在字符前面添加一个r,表示原始字符,python字符串不能被改变,向索引位置赋值, 会导致错误

>>> print('Ru\noob')

Ru

oob

>>> print r'Ru\noob'

Ru\noob

>>> 

python允许处理unicode字符串,加前缀u或者U表示这个字符串是不可变的,同一行多条语句用';'隔开

 

8.python的运算符

布尔值,布尔值和布尔函数的表示完全一致,一个布尔值只有True和False,注意首字母大写;布尔值可以用and,or和not运算,布尔值常用于条件判断中,控制,用    None表示

变量,用来存储数据的最小单位,脚本过程中其值是可变的,常量就是不能变得变量,常量通常全用大写书写,变量不需要生命,每个变量使用前都必须赋值,变量赋值以后该变量才会创建

python允许给多个变量同时赋值 a=c=b=1    ;多个对象指定多个变量啊a,b,c =1,2,'runoob'

算数运算符:取模% 取余数部分 ; 取整除 // ; 取整数部分 ; 幂 **  ;同意类型的数值运算之后类型不变;

比较运算符(返回true或者false):==相等 ;  != 不等于 ; <>不等于        在计算机如果返回1则表示真,返回0则表示假

if ( a == b ):

   print "1 - a 等于 b"

else:

   print "1 - a 不等于 b"

赋值运算符: = ; += ; -= ; *= ; /= ; 幂值运算符**=; 

逻辑运算符:and     x and y布尔‘与’如果x为False,x and y返回False,否则它返回y的计算值

                    or     x or y 布尔‘或’如果x为假则返回x的值,苟泽返回y的计算值。

                   not     not x 布尔    布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

 

9.python编码规范;

不适用分号,每行不超过80字符,如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:情况除外:1). 长的导入模块语句 2).注释里的URL

eg:x= ('这是一个非常长非常长非常长非常长

     非常长非常长非常长非常长非常长非常长的字符串')

使用4个空格来缩进代码,绝对不要用tab或者,使用tab和空格混用

对齐方式::与起始变量对齐,字典中与起始值对齐,4个空格缩进第一行不需要,字典中四个空格缩进

空行: 顶级定义之间空两行(比如函数定义或者类定义),方法定义之间空一行(方法定义或者类定义和第一个方法之间),空行是程序代码的一部分,如果没有空行,也不会报错

空格:不要在逗号分号,冒号前面加空格,但是应该在他们的后面加空格,行尾不用加;括号内不能有空格;

            参数列表,索引或者前篇的做括号前不加空格(Yes: spam(1),Yes: dict['key'] = list[index]);

            在二元操作符两边都加上一个空格, 比如赋值(=), 比较(==, <, >, !=, <>, <=,>=, in, not in, is, is not), 布尔(and, or, not).

            当'='用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.

 

10.类:如果一个类不继承自其的自类,就显示额是从object集成,嵌套类也是一样

classOuterClass(object):classInnerClass(object):pass

 

11.字符串:

     x = a + b

 x ='%s, %s!'%(imperative, expletive) x ='{}, {}!'.format(imperative, expletive) x ='name: %s;score: %d'%(name, n) x ='name: {};score: {}'.format(name, n)

 要是有两个一定要用括号,分开是输出不了的

为了避免使用过程中的空间使用浪费,使用子串加入列表,再循环后使用.join

 

 items =['

']for last_name, first_name in employee_list: items.append(''%(last_name, first_name)) items.append('
%s,%s
') employee_table =''.join(items)

print var1.lower()  # 变成小写

print var1.upper()  # 大写

print var1.capitalize()  # 首字母大写,其余小写

print var1.find('hello')        # 返回字符第一次出现的索引值

print var1.count('h')           # 返回字符串中字符'h'的数量

print (var1[5:7])          # 给定字符串的切片

var1.lstrip()# 截掉字符串左边的空格

var1.isspance() #字符串全是空格则返回真,否则假

 var1.expandtabs(tabsize=8) #tab转换成空格

 

Python的汉字占用3个字符,用于切片

 

12.文件和sockets

    使用with语句管理文件:

        with open('hello.txt') ashello_file:

            for line inhello_file:

                   print line

    不支持使用'with'语句的类似文件的对象,使用contextlib.closing():

    import comtextlib

    withcontextlib.closing(urllib.urlopen('http://www.python.org/'))as front_page:

            for line infont_page:

               print line

ToDo注释: #ToDo(dubinglin) Change this to use relations.

 

13.导入格式:每个导入应该独占一行

    import os

    import sys00

导入应该按照从最通用到最不让通用的顺序分组:

1.标准库导入    2.第三方库导入    3.应用程序导入

每个模块的完整包路径按照字典序排序,忽略大小写

 

14.访问控制:

 在python中一些琐碎和不太重要的访问函数,你应该直接使用共有变量来取代他们,这样可以避免额外的函数调用开销,当添加更多功能的时候,你可以用属性(property)来保持语法的一致性。

 

15.命名:

应该避免的名称:

1).单字符名称, 除了计数器和迭代器.

   2).包/模块名中的连字符(-)

   3).双下划线开头并结尾的名称(Python保留, 例如__init__)

命名约定:

1).所谓"内部(Internal)"表示仅模块内可用, 或者, 在类内是保护或私有的.

  2).用单下划线(_)开头表示模块变量或函数是protected的(使用import* from时不会包含).

  3).用双下划线(__)开头的实例变量或方法表示类内私有. 

  4).将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块. 

  5).对类名使用大写字母开头的单词(如CapWords,即Pascal风格), 但是模块名应该用小写加下划线的方式(如lower_with_under.py).尽管已经有很多现存的模块使用类似于CapWords.py这样的命名, 但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰.

 

16.main:Main 

即使是一个打算被用作脚本的文件, 也应该是可导入的. 并且简单的导入不应该导致这个脚本的主功能(main functionality)被执行, 这是一种副作用. 主功能应该放在一个main()函数中.

在Python中, pydoc以及单元测试要求模块必须是可导入的. 你的代码应该在执行主程序前总是检查

if __name__ == '__main__' , 这样当模块被导入时主程序就不会被执行.

def main():

      ...

if __name__ == '__main__':

    main()

所有的顶级代码在模块导入时都会被执行. 要小心不要去调用函数, 创建对象, 或者执行那些不应该在使用pydoc时执行的操作.

 

17.list:是使用最频繁的数据类型,支持数字,字符串和嵌套列表,索引值从0未开始值,-1为从末尾的开始位置。使用变量给列表赋值,列表保持赋值时候的变量数值

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]       一定要加中括号,不加括号或者加上小括号不然变成元组tuple了

tinylist = [123, 'runoob']

print (list)           # 输出完整列表

print (list[0])         # 输出列表第一个元素

print (list[1:3])       # 从第二个开始输出到第三个元素

print (list[2:])        # 输出从第三个元素开始的所有元素

print (tinylist * 2)    # 输出两次列表

print (list + tinylist) # 连接列表,只能列表列表之间才能连接,不能列表与元素一起连接

print (list1 + list2)

print '元素1是否在列表list中:%s'% (1 in list1)

%s表示用字符串替换 ,%d 表示用整数替换,%f  表示用浮点数替换

列表元素的添加:

  在列表的尾部追加元素:.append()       list1.append('小明')添加'小明'元素

 删除列表中的元素:.remove()           list1.remove('小明')删除第一个重复的'小明'元素

删除列表的指定元素,移除列表中的一个元素,默认是最后一个元素,并且返回这个值的元素,索引值

:list.pop(obj=list[-1])    list1.pop()       print list1.pop(0) 永久改变

删除列表 dellist1()               删除列表1

在指定位置中插入元素:.insert(位置,元素)    list1.insert(2,'小明')插在第三个位置,单独语句,不能再print中写入list2.insert(i,i+ 1)  这是插入,如果只是修改列表,使用赋值

 list1['索引值'] = values 

连接两个字符串:.extend()           list1.extend(list2)将另一个表插在一个表的末尾,后面的可以直接写成

列表长度    len(list)           len(list1)读取元素的长度 ,可以用可变参数求参数个数

最大值max()最小值min()

每n个中取一个list1[开始值:结束值:间隔值]           print list1[::n] 会从第一个索引值开始提取,不包含结束值,如果取到最后则可以第二个值空着,第三个值不为0

元组转换成列表list1=list(tuple1)

返回不是边界的整数range()函数,range(2,5)       #返回从2到5之间的不包含右边界的整数,生成一个数列(列表),

                       list1 = rang(1,101)

包括左边界不包括右边界

对原列表进行排序list.sort([func])                       #,,,,,,,,,,,正序排列,,,,,,,,,,,

比较两个列表的元素    cmp(list1,list2)               # ASC2码 如果第一个较大返回 1,相等返回 0 ,第二个较大返回-1

反向列表中的元素list.reverse()                          #,,,,,,,,倒序排列,,,,,,,,,,

获取端口输入的数据: 

  input('能够输出端口的文字')返回的是数值:int或者float,input会计算数值中的数字表达式  

  raw_input('要输出在端口的文字')返回的是字符串类型,string类型

  从列表中找出某个值第一个匹配项的索引位置:list.index(obj)

字符串中额元素是可以修改的,添加中文后会变成16进制代码

>>> a[2:5] = [13, 14, 15]

>>> a[2:5] = []   # 删除

 

18.tuple元组:与列表类似,不同之处在于元组的元素不能修改,元组中的元素可以进行调用但是不能计算

 

19.特殊字符: 

1)输出中既有单引号又有双引号: print ('bob said \"I\' am ok\"')    使用反斜杠来控输出的单引号双引号

2)打印单引号”’’”用双引号括起来,如果打印双引号则用单引号括起来,打印换行符’\n’ 打印tab‘\t’ 打印反斜杠 ‘\\’,输出%只用在里面打两个%%,

 

20.语句输出,

使用语句的时候循环变量一定要放到语句的外面定义,不然每定义一遍就赋初始值一遍

if...else...语句:

因为Python不支持switch语句所以多个条件判断的时候只能用elif来实现

   if 条件1:

               结果1

   elif 条件2:

               结果2

   else:

       结果3

if (dep == '数学系' and banji = 2) or (dep == '计算机系' and banji= ‘3’):

    print('请在下周五去12教学习Python')

else:

    print('不用去学习')

遍历,迭代for语句: 

for x in [1,2,3]:

      print x            输出结果为1,2,3

for j in list1:
   
i += 1 print j/i

while语句(Python中没有do,while语句,提供while循环和for的循环,可以在while循环中嵌套for循环)

while x

        print x

        x += 1

如果不是真的话就跳出循环

        当有两个while循环的时候,定义内循环变量的时候一定要注意,变量放在外循环中,不然只能循环一次,下例99乘法表中的如果放在外面只能输出一列,

j = 9 while j > 0:  i = 1            #一定要放在内循环中 while i < 10: print (10-j),'x',i,'=',(10-j)*i
          i += 1 j -= 1

 

break语句: 跳出if条件所在的那个循环循环。if 条件:break语句中。一定要注意if中的语句不是能死循环,break后面的语句和循环直接跳出,不执行

i = 0 while i < 20:
   
sum = 0 sum += 2**i
   
i +=1 if i > 19: print sum break

 

continue跳出当前循环,continue后面的语句不执行,但是循环仍然进行

 

21.Dictionary

是除列表意外,Python之中最灵活的内置数据结构,列表是有序对象结合。字典是无序的对象集合

两者之间的区别在于,字典当中的元素是通过键来存取的而不是通过偏移存取,用{}标识,由key(是不可变的,元组可以,但是列表不可以,列表是可变的)和value组成

pass循环控制语句: pass是空语句,是为了保持程序结构的完整性

dict = {}

dict['one'] =    ,;

听见没感情5  "This is one"
                #赋值

dict[2]= "This is two"                   # 赋值使用,中括号

tinydict = {'name':'john','code':6734, 'dept': 'sales'}

print dict['one']             # 输出键为'one' 的值       This is one

print dict[2]                     # 输出键为 2 的值     This is two

print tinydict                     # 输出完整的字典

print tinydict.keys()             # 输出所有键

print tinydict.values()             # 输出所有值

deldict['name']  #删除自字典中'name'的条目

dict.clear()#清空字典所有条目

dict1.fromkeys(sep.val) #以序列sep中的元素做字典的键,val为字典所有键对应的初始值

del dict  #删除字典

cmp(dict1,dict2)  #比较两个字典中的元素

len(dict)  #计算字典元素个数,即键的总数

str(dict)  #输出字典可打印的字符串表示

print type(dict)                        #返回数据类型

radiansdict.get(key,default=none) #返回指定键的值,如果值不在字典中返回default

radiansdict.setdefault(key,default=none) #如果不存在于字典中,则会自动添加键并将值设为default

radiansdict.has_key() #如果键在字典dict里返回true,否则返回false

radiansdict.items() #以列表返回字典中的值

radiansdict.keys() #以列表返回字典中所有的键

radiansdict.values() #返回字典中所有的值

radiansdict.update(dict2) #把字典dict2中的键和值更新到dict中去

radiansdict.pop(key) #删除字典中的元素 dict1 = {9:4, 5:8, 7:6} dict1.pop(9)    可以删除键为9的条目       字典中不能使用remove            AttributeError: 'dict' object hasno attribute 'remove'

for i in tinydict:这个后面一定不能有()  或者      for key in tingdict():   或者for in tinydict.keys()               # 打印出key。

for value ind.values():                    #打印出value

for value,key intingdict.items():                #打印出key和value值,items不能少,不然会报错key和value不加

for value in dict1.values(): print 'value', value                        #固定写法,是用value,输出value的值,固定变量

从界面获取  字符串获取raw_input('要说的话')        或者 整形获取input('要说的话')

D.clear()                             #移除D中的所有项 

D.copy()                              #返回D的副本 

D.fromkeys(seq[,val])                 #返回从seq中获得的键和被设置为val的值的字典。可做类方法调用 

D.get(key[,default])                  #如果D[key]存在,将其返回;否则返回给定的默认值None 

D.has_key(key)                        #检查D是否有给定键key 

D.items()                             #返回表示D项的(键,值)对列表 

D.iteritems()                         #从D.items()返回的(键,值)对中返回一个可迭代的对象 

D.iterkeys()                          #从D的键中返回一个可迭代对象 

D.itervalues()                        #从D的值中返回一个可迭代对象 

D.keys()                              #返回D键的列表 

D.pop(key[,d])                        #移除并且返回对应给定键key或给定的默认值D的值 

D.popitem()                           #从D中移除任意一项,并将其作为(键,值)对返回 

D.setdefault(key[,default])           #如果D[key]存在则将其返回;否则返回默认值None 

D.update(other)                       #将other中的每一项加入到D中。 

D.values()                            #返回D中值的列表 

 

defaddWord(theIndex,word,pagenumber):

  theIndex.setdefault(word,[ ]).append(pagenumber)#存在就在基础上加入列表,不存在就新建个字典key  

d= {"hello":[3]}

#d= {}

addWord(d,"hello",3)

addWord(d,"hello",56)

addWord(d,"nihao",24)

printd

 

程序运行结果如下:

1

{'nihao': [24], 'hello': [3, 3, 56]}

 

 

import random # 引用所需的类库

a = random.random()         #   生成一个0-1的随机浮点数0.415748914

a = random.uniform(a,b)        #   生成一个指定范围内的随机浮点数

a = random.randint(a,B)        #    生成一个指定范围内的整数

 

21,函数:使用def定义函数,定义函数的时候涉及到出书

def def1(i, j): print i, '+', j, '=', i+j
def1(
1, 2)

也可以定义没有参数的函数:

def def1()

    print '这是一个没有参数的函数'

    调用的的时候直接写def1,默认参数只能定义在必须参数的前面

有关参数的报错:参数个数不对,参数类型不对

默认参数:简化调用,你只需把必须参数传进去就行;但是需要的时候你又可以传入额外的参数来覆盖默认参数,默认参数要放在不是默认参数的后面

形参:函数定义的时候的参数

实参 : 函数调用的时候传的两个参数

可变参数:可变参数的名字前面有个*号,我们可以传入0个,1个或者多个参数给可变参数,可变参数可以看成一个元组,可以进行遍历调用,可变参数只能将参数放在函数小括号里面,虽然运行过程相当于元组,但是不能直接把元组或者列表传给虚参,可以用len()函数计算元素的个数,也可以传字符串等

def average(*a): if len(a) == 0:  print aelse:  return sum(a)/len(a) print average(1, 2, 3, 9)

return语句:

       函数缺少相等的return语句,这种情况下返回值就是None,再有返回值的函数中,一定要保证每个可能的流程都对应着return语句,return语句可以返回一个或者多个值,也是以元组的形式传回

 

22.常用例子

冒泡排序法

    重复走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们调换,走访数列的工作是重复进行指导没有再需要交换,也就是说这个数列已经排序排序完成

特殊语句:

 冒泡排序法交换序列:1=1+2;2=1-2;1=1-2;

 注意:两层循环,内层循环条件每次减一,如果使用函数的话,注意让函数return,else可以使用pass让程序完整。不能使用变量代换进行调换,虽然可以把列表的值赋值给变量,但是不能用

 x被i整除:x%i == 0 或者not(x%i)     不被整除则只用表达式就可以x%i

 99乘法表:while语句,控制列输出10-j;    控制行输出i;或者用for语句inrange(1,10)

  注意的是,如果在一个循环中输出末尾加“,”,那么所有的输出都会在同一行

 素数:只能被1和本身整除

i = 2 while i<100:
   
j = 2 while j<=(i/j): if not(i%j):break j += 1 if j >(i/j): print ii += 1

使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。

针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

 

23高级特性

   切片  L[0:3] 表示从索引0开始取,只到索引3为止,但不包括索引3,即索引0,1,2,正好3个元素;支持倒数,倒数第一个元素的索引是-1

L[:10:2]表示从索引0开始取,直到索引9为止,每两个取一个

 L[::5]表示所有的数,每五个取一个。

 除了list可以做切片,tuple和字符串也可以用切片操作。对于字符串就相当于截取函数

①pythonpath变量

    set PYTHONPATH=c:\pathon27\lib;

    set PYTHONPATH=/usr/local/lib/python

②dir()函数,模块中包含的函数

    import math

    print dir(math)

③reload()函数,重启模块

④__int__.py(python自我保留)

·        Phone目录下Isdn_1.py 含有函数Isdn()

·        Phone目录下G3_1.py 含有函数G3()

·        Phone目录下的pots_1.py含有Pots()文件

 可以在__int__.py文件夹下,使用显式的导入语句,然后在其他文件中导入phone包的时候就可以使用上述三类例子函数

from Pots_1 import Potsfrom Isdn_1 import Isdnfrom G3_1 import G3

#!/usr/bin/python # -*- coding: UTF-8 -*-  导入 Phone  import Phone   Phone.Pots() Phone.Isdn() Phone.G3()

raw_input从屏幕端读取原始字符串

    input从屏幕端读取运算结果

file文件操作,open打开文件,读写文件

file_1 = open("wenben.txt","r+") 打开文件,文件名字,打开模式,关闭文件

print file_1.name,file_1.mode

# file_1.close()

  write可以对文件写入字符,包括二进制字符,但是不能够默认在文字末尾添加“/n”

  file_1.write("woaini")#都可以写入

  file_1.writelines("今天天气非常好") #都可以写入但是不能够自动换行,而且会直接覆盖原有内容

  read[10]读取10个字符file_1.read

  tellfile_1.tell() 查找当前位置,返回索引值

  rename os.rename("wenben.txt","shuaiqi.txt")

  os.mkdir("happy")在所运行的文件下建立目录

  os.rmdir("happy")在所运行的文件下建立目录

  os.chdir("/home") 改变所运行的目录

  os.getcwd()给出当前目录

    

24.try....except.....else异常处理语句

try: <语句>#运行别的代码

except <名字> <语句> #如果在try部份引发了'name'异常

except <名字><数据>: <语句> #如果引发了'name'异常,获得附加的数据

else: <语句>#如果没有异常发生

 

用例:

try:

    fh = open("testfile""w")

    fh.write("这是一个测试文件,用于测试异常!!")

    fh.write("这是一个测试文件,用于测试异常!!")

    fh.write("这是一个测试文件,用于测试异常!!")

except IOError:

    print "Error: 没有找到文件或读取文件失败"

else:

    print "内容写入文件成功"

    fh.close()

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

try: <语句> finally:<语句>    #退出try时总会执行 raise

    

raise 可以创造异常,但是触发异常后就不会执行后面的语句

#!/usr/bin/python # -*- coding: UTF-8 -*-定义函数 def mye( level ):     if level < 1:        raise Exception("Invalid level!", level)        触发异常后,后面的代码就不会再执行 try:     mye(0)                // 触发异常 except "Invalid level!":     print 1 #因为前面触发异常,所以这里不会执行 else:    print 2

用户自定义异常

    class Networkerror(RuntimeError):

    def __init__(self, arg):

        self.args = arg

try:

    raise Networkerror("Bad hostname")

except Networkerror,e:  #在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

    print e.args

    

python在字符串中插入变

    1. 使用连接符: +

    world = "World"

    print "Hello " + world + " ! "

    2. 使用占位符来内插

    world = "World"

    print "Hello %s !" % world

    3. 使用函数

    li = ['my','name','is','bob']

    mystr = ' '.join(li)

    print mystr

python修改字符串中的文

param=param.replace("旧的","新的")

exec(param) 将字符串变成代码来执行

有分号的时候可以当成语句,也可以把读取的字符串当成变量名

字典也可以把读取的字符串当成变量名

 

25页面操作

brow.quit() # 关闭浏览器

brow.maxmize_window() # 浏览器最大化

brow.set_window_size(480,800) # 设置浏览器的宽和高

brow.get(url) # 访问页面

brow.back() # 当前页面后退

brow.forward() # 前进页面

XPATH

相对路径,绝对路径

find_element_by_xpath("/html/body/div[2]/form/span/input")

相对路径定位:

find_element_by_xpath("//input[@id=’input’]") #通过自身的id 属性定位

find_element_by_xpath("//span[@id=’input-container’]/input") #通过上一级目录的id 属性定位

find_element_by_xpath("//div[@id=’hd’]/form/span/input") #通过上三级目录的id 属性定位

find_element_by_xpath("//div[@name=’q’]/form/span/input")#通过上三级目录的name 属性定位

XPath 可以做布尔逻辑运算,例如://div[@id=’hd’ or @name=’q’]

 

你可能感兴趣的:(python)