随笔四、Python基础知识

Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/, 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum1989年发明,第一个公开发行版发行于1991年。 ---- 摘自 百度百科

本课程主要是讲基于python的selenium自动化测试,所以,关于python语言编程的部分,我们以够用为标准,以在工作中能用得上为导向进行学习,直接进入主题,以求达到快速入门,并能灵活运用的目的。

 

1、输出

我们学习编程,都是从打印“Hello World”开始,我们也从这里开始

python中,打印信息的命令是:print

通常,我们编程的时候,都要新建一个文件,并且保存成.py 格式的文件,然后在文件里面编程。

 2、变量

python中,定义一个变量很简单,直接写就好,不用像C语言或java那样先声明,如:

name = "梅仁爱"

i=5

namei 就是个变量,"梅仁爱",和 5 就是变量的值。输出变量的值时,可以在print后直接接变量名,如:

也可以按以下方式输出:

学过C语言的同学应该知道,%d%f%s(%8d,%8.2f,%8s)分别输出整型,浮点型和字符串。

 3、输入

一个程序要能实现人机交互功能,必须要能够接受从键盘上输入的数据。在python中,接收由键盘输入的数据的函数是 input()

 type()是查看数据类型,现在我们查看一下input函数的返回类型

 eval()将字符串str当成有效的表达式来求值并返回计算结果。

 4、注释

python中,注释代码,可以在代码前加上符号 # ,如果要注释多行,就要用三个单引号括住 ''',如以下:

 切记:单引号只能是三个,不能多也不能少。

5、if判断语句

if判断语句的语法:

if  条件:

    语句1

else:

    语句2

if后面的条件成立,则执行语句1;否则,执行语句2。

  if .. elif语句的语法:

 if  条件1:

    语句1

elif 条件2:

    语句2

else:

    语句3

当条件1成立,则执行语句1,然后跳出if判断;当条件2满足,则执行语句2,然后跳出if判断;如果条件1和条件2都不满足,则执行语句3。

练习:

1) 从键盘输入一个数判断数判断是否大于100还是小于100

 2)从键盘输入 y 或 n,如果是y,则打印:“I love you too”;如果输入n,则打印:"shit,get out!";否则,打印:“input wrong”

 5、while循环语句

if一样,while也是一种控制流语句,另外它也被称作循环语句。

 程序执行到while处,“当”条件为True时,就去执行while内部的代码,“当”条件为False时,就跳过。

 语法为

while 条件:

 循环执行的语句

 if一样,注意冒号,注意缩进。

6、for循环语句

接下来,跟大家讲解下另外一种常用的循环语句,for循环。

语法:

for ... in ...

while一样,for循环可以用来重复做一件事情。在某些场景下,它比while更好用。比如,输出1100我们用while来做,需要有一个值来记录已经做了多少次,还需要在while后面判断是不是到了100。

如果用for循环,则可以这么写:

for i in range(1, 101):

print i

解释一下,range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数。for i in range(1, 101)就是说,把这些数,依次赋值给变量i。相当于一个一个循环过去,第一次i = 1,第二次i = 2,……,直到i = 100。每一次循环,i的值都会自增1。当i = 101时跳出循环。所以,当你需要一个循环10次的循环,你就只需要写:

for i in range(1, 11)

或者

for i in range(0, 10)

 

区别在于前者i是从1到10,后者i是从0到9。当然,你也可以不用i这个变量名。

比如一个循环n次的循环:

for count in range(0, n)

for循环的本质是对一个序列中的元素进行递归。

for i in range(a, b)

a循环至b-1

 附:

range(start,end,scan)

range()函数,start表示开始位置,end表示结束位置,scan表示每一次循环的步长。

 补充:break(跳出循环),continue(结束本次循环)

  7、数组/列表

什么是数组呢?数组,在C语言或java里面,我们可以把它看作是一个类型的所有数据的一个集合。但是在python里则不一样,数据可以存放各种类型的数据,也就是说,可以把数据理解为很多种数据的集合。比如,一个购物清单里面,会有很多种商品,我们可以把这个购物清单理解为是一个数组。大家看看一下下面这个例子:

shuzu = [1,'苹果','香蕉','apple',5]

这就定义了一个数组,数组里面包含5个元素,分别是:1,'苹果', '香蕉','apple',5 。这5个元素,都是用[]括号括起来。[]括号里面的每一个元素用逗号(,)隔开。在python里面,就是用这样的一个方式定义一个数组。

怎么使用数组的值呢?这时,我们就要用到数组的下标方式去访问具体的值了。数组的第一个值的下标是0,第二个是1,以此类推。也就是说,访问数组的下标,是从0开始的。比如:shuzu[1],它的值就是“苹果”。

怎样把数据的所有值的遍历出来呢?这时,我们可以使用for循环语句。如下:

如果我定义的数据,写漏了某个元素,怎么办呢?这时,我们可以使用python的内置函数append()向数组追加元素。

修改数组中的某一个元素,只需要直接给那个元素赋值就可以了:

shuzu[0] = 123

删除数组中的某一个元素,要用到del:

del shuzu[0]

8、函数

什么是函数呢?数学上的函数,是指给定一个输入,就会有唯一输出的一种对应关系。编程语言里的函数跟这个意思差不多,但也有不同。就是你编写了一些语句,为了方便使用这些语句,把这些语句组合在一起,给它起一个名字。使用的时候只要调用这个名字,就可以实现语句组的功能了。它有可能需要输入,有可能会返回输出。

举一个现实中的场景:我们去餐厅吃饭,跟服务员点了菜,过了一会儿,服务员把做好的菜端上来。餐厅的厨房就可以看作是一个函数,我们点的菜单,就是给这个函数的参数;厨师在厨房里做菜的过程就是这个函数的执行过程;做好的菜是返回结果,返回到我们的餐桌上。

我们之前已经用到过python里内建的函数,比如input和range。

range(1,10)为例,range是这个函数的名称,后面括号里的1和10是range需要的参数。它有返回结果,就是一个从1到9的序列。

再来看input(),括号里面没有,表示我们没有给参数。函数执行过程中,需要我们从控制台输入一个值。函数的返回结果就是我们输入的内容。

要使用函数,首先要定义好函数。函数分两种,一种是无参函数,一种是有参函数。

无参函数定义的语法如下

def 函数名():

函数体

例:定义一个无参函数,并打印“Hello,world!”

无参函数,在工作中的实际意义不大,因为,不能按我们的要求来做事。

有参函数定义的语法如下:

def 函数名(参数列表):

函数体

例子:设计一个函数,并实现求两个数的和。

局部变量:

你在函数定义中声明的变量,他们与在函数外使用的其它同名变量没有任何关系,即变量名称对函数来说是局部的

全局变量:

函数之外的变量,在函数内部使用全局变量则需要加入关键字global

9、模块

模块,在C语言中成为“头文件”。python自带了功能丰富的标准库,另外还有数量庞大的各种第三方库。使用这些功能的基本方法就是使用模块,通过模块,可以重用别的程序中的代码。

模块可以理解为是一个包含了函数和变量的py文件。在你的程序中引入了某个模块,就可以使用其中的函数和变量。比如要引用模块math,就可以在文件最开始的地方用import math来引入。在调用math模块中的函数时,必须这样引用:模块名.函数名

有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以通过语句

from 模块名 import 函数名1,函数名2....

10、自定义模块

1)__name__ == “__main__” 让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执

 2) 自己定义一个模块,然后自己把模块导入使用

3)导入第三方库

Python用异常对象(exceptionobject)来表示异常情况。遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

在实际的脚本开发中,有时候程序并不会像我们设计它时那样工作,它也有“生病”的时候,那么我们可以通过异常处理机制,有预见性地获得这些病症,并开出药方。比如,对一个正常人,大冬天的洗冷水澡,那么就有可能感冒,我们可以事先在洗冷水澡时准备好感冒药,假如真感冒了,就立刻吃药。

运行后程序得到错误提示:

print int('0.5')

ValueError: invalid literal for int() with base 10: '0.5'

意思是,在test.py这个文件,第1行,print int('0.5')这里,你拿了一个不是10进制能够表示的字符,我没法把它转成int值。

上面的错误可以避免,但在实际的应用中,有很多错误是开发者无法控制的,例如用户输入了一个不合规定的值,或者需要打开的文件不存在。这些情况被称作“异常”,一个好的程序需要能处理可能发生的异常,避免程序因此而中断。

我们把上述程序加入异常机制

try :

    print (int('0.5'))

    print ("no excpet")

except :

    print ("err")

print ("end")

python中,可以使用try...except语句来处理异常。做法是,把可能引发异常的语句放在try-块中,把处理异常的语句放在except-块中

当程序在try内部引发异常时,会跳过try中剩下的代码,直接跳转到except中的语句处理异常。于是输出了“err.”。如果print (int('0.5'))正常,而不会去执行except中的语句。

但无论如何,整个程序不会中断,最后的“end”都会被输出。

try...except语句中,try中引发的异常就像是扔出了一只飞盘,而except就是一只灵敏的狗,总能准确地接住飞盘。

异常类型:如果我们需要把异常提示打印出来,这时候我们就要用到异常类型,异常类型有很多下面我们例举几个常用的

ValueError

KeyError

TypeError

ImportError

IOError

如果我们不管有没有异常我都要干某一个操作该怎么做,那我们就需要引入try ...except .....finally

我们做个文件操作打印错误类型以及使用 finally

Raise显示抛出异常

综合练习:

1、 定义一个函数,函数接收一个数组,并把数组里面的数据从小到大排序(冒泡排序)。

 

提示:

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。

  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

假定有下标为0~n的n+1个数的序列,要求按升序排列,实现的步骤如下:

(1)从第0个元素开始与后一个比较,如果比后大两元素交换,依次比较到第n个元素,最终将最大的数换入第n个元素中,a(n)不动;

(2)重复(1) ,依次比较到第n-1个元素,最终将最大的数换入第n-1个元素中,a(n-1)不动;

(3)重复(1) ,依次比较到第n-2个元素,最终将最大的数换入第n-2个元素中,a(n-2)不动。

2、 求任意数之间素数

提示:素数是除了1和自身不能被其它数整出

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值