20170921学习笔记Selenium 2 第三章Python基础

3.1Python哲学
在Python Shell中,输入import this
会看到一段哲学的话。
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

一定要自己翻译一遍,最好想想曾经老师教过的代码。就会体会很深。
扁平化,可读性,间隔要比紧凑好。简洁明了。
做永远比脑中的计划好。
要有压力,才有动力。参加工作后,领导给你的任务,别人的成长,都要激发你不断学习的动力。

3.2输入与输出
3.2.1print打印
print("Hello World!")

#coding=utf-8

#名称变量 %s string 类型
name= "zhangsan"
print ( "hello %s,Nice to meet you" %name)

#数字变量 %d data
age= 27
print ( "You are %d" %age)

#不清楚类型时,选择用 %r
n= 100
print ( "you print is %r" %n)

n= "abc"
print ( "you print is %r" %n)

#输出多个变量 %()
name= "zhangsan"
age= 22
print ( "student info : %s %d." %(name,age))

3.2.2 input输入
实际场景,用户是输入数据并显示出来。
input 输入。

#等待用户输入
n= input ( "Enter any content:" )
print ( "Your input is %r" %n)

按F5快捷运行,有写编辑器需要alt + shift + F10

3.2.3引号和注释
Python不区分单引号,和双引号。单引号双引号可以嵌套使用,但是不能交叉使用。
单行注释 #
多行注释 """ 或者''' 都可以
"""
我们实现的是伟大的程序
"""
'''
This is a Multi
line conment
'''

3.3分支与循环
3.3.1 IF语句
if else 语句
#1通过判断大小,来输出
a=2
b=3
if a>b:
print("a max!")
else:
print("b max!")

#2判断是否相等 ==
#3不相等 !=
#4包含 in 不包含 not in

#判断布尔类型 true false

多重判断

results = 72
if reult >= 90:
print('优秀’)
else results >=70:
print('良好')
else results >=60:
print ('及格')
else:
print('不及格')

3.3.2for语句
可以遍历字符串
for i in 'hello world':
print(i)
可以遍历字典
>>> fruits=['banana','apple','mango']
>>> for fruit in fruits:
print(fruit)

可以进行一定次数的循环
>>> for i in range(5):
print(i)
0
1
2
3
4

#range()函数 是从0开始循环遍历,也可以起始位置和计算步长,
>>> for i in range(1,10,2):
print(i)
1
3
5
7
9

3.4数组和字典
3.4.1数组
数组用【】表示,里边的每一项用逗号隔开。
>>> lists=[1,2,3,'a',5]
>>> lists[4]='b'
>>> lists.append('c')
>>> lists
[1, 2, 3, 'a', 'b', 'c']
#append()函数可以向数组末尾添加新的项

3.4.2字典
字典用大括号表示{} ,里面的项成对出现。一个key对应一个value值。
key和value之间用: 冒号隔开,不同的项之间用逗号分隔。
#建立字典
>>> dicts ={'usename':'zhangsan','password':123456}
#字典的key值
>>> dicts.keys()
dict_keys(['usename', 'password'])
#字典的values值
>>> dicts.values()
dict_values(['zhangsan', 123456])
>>> dicts.items()
dict_items([('usename', 'zhangsan'), ('password', 123456)])
#for循环遍历字典
>>> for k,v in dicts.items():
print("dicts keys is %r" %k)
print("dicts values is %r" %v)

dicts keys is 'usename'
dicts values is 'zhangsan'
dicts keys is 'password'
dicts values is 123456
>>>


程序:通过zip方法把两个list合并为dictionary,遍历会按照原先的顺序
>>> keys=['b','a','c','e','d']
>>> values =['2','1','3','5','4']
>>> for key,value in zip(keys,values):
print(key,value)

b 2
a 1
c 3
e 5
d 4
3.5函数,类和方法
3.5.1函数
通过def关键字来定义函数
def add(a,b)
print(a+b)
add(3,5)
通常函数不会直接打印结果,而是将处理结果通过return关键字返回。
>>> def add(a,b):
return a + b

>>> add(3,8)
11
>>>


还可以为add()函数设置默认参数。
>>> def add(a=1,b=2):
return a+b
>>> add()
3
>>> add(3,5)
8
>>>
3.5.2类和方法
用class来创建类。一切皆为对象,抽象的一组对象就是类。
class A(object):
def add(self,a,b):
return a+b
count=A()
print(count.add(3,5))

创建了一个A类(里面的object为所有类的基类,所有类在创建时默认继承object)
在类下面的方法add()第一个参数必须存在,一般习惯写self,但是调用这个方法不需要为这个参数传递参数。

一般创建类时会首先声明,初始化方法 _init_()
#创建类B
class B():
#声明初始化方法,取整。
def __init__ ( self ,a,b):
self .a = int (a)
self .b = int (b)
#声明类下的add方法,是将传递的参数相加。
def add( self ):
return self .a + self .b
#count为B类的一个具体对象。
count =B( '4' , 5 )
print (count.add())
#字符串4被初始化为int类型的4,输出结果9
9

类的继承
#首先创建一个A类,其下的方法add()用于计算两个参数相加。
class A():
def add( self ,a,b):
return a+b
#创建B类继承A类所以B类也有了add()的方法。可以通过B来直接调用add()方法。
class B(A):
def sub( self ,a,b):
return a-b

#调用B类的add方法
print (B().add( 4 , 5 ))
print (B().sub( 4 , 5 ))

9
-1

3.6模组
模组更通俗的叫做模块。在实际开发中,经常需要用到系统的标准模块或第三方模块。
例如,想实现时间有关的功能。需要调用系统的time模块。想实现文件与文件夹有关的操作,需要用到os模块。
再例如,我们通过selenium实现的web自动化测试,Selenium对于Python来说,就是第三方模块。
3.6.1引用模块
通过import 或 form……import……的方法引用模块。
#time模块的引用 import
>>> import time
#调用了time模块的ctime()方法
>>> print (time.ctime())
Thu Sep 21 17:02:50 2017
>>>
#------------------------
#当只需要调用模块中的某一中方法时,用from import引用
# from time import ctime
# print(ctime())

#--------------------------
#一次性把time模块下的所有方法引入
from time import *
print (ctime())
print ( "休眠两秒" )
sleep( 2 )
print (ctime())

Thu Sep 21 17:39:47 2017
休眠两秒
Thu Sep 21 17:39:49 2017

通过help()方法来查看time模块的说明
import time
help (time)

3.6.2模块调用
自己创建模块,再通过另外一个程序调用。
1.同目录下的调用。
from pub import add

3.6.3.跨目录模块调用
from model.pub import add
3.6.4进阶-跨目录调用模块(这一块对照看Python基础教程)
#1 使用.count
from .count import A
#2 使用导入环境变量
import sys
sys .path.append( "./model" )#将model目录添加到系统环境变量path下
3.7异常
3.7.1认识异常
python 用异常对象(exception object)来表示异常情况。
FileNotFoundError 文件找不到异常
NameError 名称异常
#引入文件异常
try:
open("abc.txt")
except FileNotFoundError:
print("异常了")

#引导所有异常问题
try:
open("abc.txt",'r')
except Exception:
print("异常了")


#输出异常信息
try :
open("abc.txt",'r')
print(aa)
except BaseException as msg:
print(msg)

3.7.2更多异常
#try except else 没有异常输出
try :
aa= "异常测试"
print (aa)
except Exception as mag:
print (msg)
else :
print ( "没有异常!" )

#不管是否异常,都会被执行 try...except...finally
try :
print (aa)
except Exception as e:
print (e)
finally :
print ( "不管是否异常,我都会被执行" )

3.7.3抛出异常
from random import randint
#生成一个1到9之间的整数
number = randint( 1 , 9 )

if number % 2 == 0 :
raise NameError ( "%d is even " % number)
else :
raise NameError ( "%d is odd" % number)

输出结果:
Traceback (most recent call last):
File "D:/Users/dufengchen/Documents/python/kingRoad/异常被抛出.py", line 11, in
raise NameError("%d is odd" % number)
NameError: 7 is odd

注意:raise 只能使用python中所能提供的异常类。

你可能感兴趣的:(学习笔记)