Python基础知识

Python历史

一、历史

        Python之父,荷兰人Guido van Rossum(吉多·范罗苏姆)。他于1982年从阿姆斯特丹大学取得了数学和计算机硕士学位。1991年,Python的第一个解释器诞生了。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

 

二、应用领域

       Python 语言除了在自动化测试领域有出色的表现外,在系统编程,网络编程,web 开发,GUI开发,科学计算,游戏开发、网络应用、网站后台、 爬虫服务、系统工具、大数据、人工智能、自动化测试等多个领域应用非常广泛,而且具有非常良好的社区支持。也就是说学习和掌握python 编程,其实是为你打开了一道更广阔的大门。

 

三、优点

1.易于维护和学习,语法简单;

2.提供了广泛的库,既可以开发小工具也可以开发企业级应用,功能强大;

3.面向对象,免费开源。

 

四、缺点

1.解释性语言(先翻译成中间代码,再由解释器对中间代码进行解释运行),执行速度慢

2.代码无法加密,直接运行代码,不是运行程序

 

五、选择Python的理由

1.测试人员的编程能力普遍不是很强,而Python作为一种脚本语言,不仅功能强大,而且语法优美,支持多种自动化测试工具,而且学习上手比较容易。

2.Python的社区发展比较好,有着非常多的文档和支持库,另外Python也可以在Web开发、数据处理、科学计算等纵多领域有着非常好的应用前景。

3.对于有一定编程基础的人员,使用Python作为自动化测试的语言可以非常顺畅的转换,几乎没有学习成本。

 

 

 

第一行代码

一、创建一个项目

路径最好不要有中文

项目名称最好不能有空格

项目名称最好不能数字开头

 

二、创建python文件

文件名称最好不能有空格

文件名称最好不能数字开头

 

头文件设置

 

三、打印输出

name = "hello word"

age = 18

1.# 换行输出

print(name)

print(age)

print('---------')

 

2.# 不换行输出

print(name, end=" " )

print(age, end=" " )

 

3.#格式化输出

print(“我的名字叫{}”.format('小明'))

 

4.#打印输出换行

print('\n')

 

5.#打印输出空格

print('\t)

 

6."+"号

注:+号两边的数值类型必须一致

name = "小明"

print("我的名字是:" + name)

 

7.”,”号

name = "码上开始"

print("我的名字是:" , name)

 

8.运算

a=10

b=20

print(a*b)

 

四、输入

input(“请输入你的名字:“)

输入值类型为字符串

 

五、注释

1.单行注释

# 第一个注释

print ("Hello, 码上开始!") # 第二个注释

 

2.多行注释

多行注释可以用多个 # 号,还有 ''' 和 """:

# 第一个注释

# 第二个注释

 

'''

第三注释

第四注释

'''

 

"""

第五注释

第六注释

"""

 

六、变量与常量

常量就是普通字符串

变量就是定义之后还能发生改变,可以重新赋值的量;

是与常量相对而言,python里 a = 1 就算是声明一个变量 a, 然后重新赋值a = 10,a的值就变成了10了

 

七、变量的类型

1.数值类型:整数、浮点数、布尔数、复数

2.非数值类型:字符串,字符串的表现是单双引号

3.对象类型:列表、元组、字典

 

八、运算符:

1.算数运算符

a=10,b=20,c=4

(1)加+

print(a+b)

结果:30

 (2)减-

print(b-a)

结果:10

(3)乘 *

print(a*b)

结果:200

(4) 除/

print(b/a)

结果:2

(5)取余%

print(a%c)

结果:2

(6) 返回商的整数//

print(a//c)

结果:2

(7)幂 **

print(a**c)

结果:10000

 

2.比较运算符

(1)等于==

(2)不等于!=

(3)小于<

(4)大于>

(5)大于等于>=

(6)小于等于<=

 

3.赋值运算符

(1)赋值=

a=10

(2)加法赋值

a+=b 相当于a=a+b

(3)乘法赋值

a*=b 相当于a=a*b

(4)减法、除法、幂等以此类推

 

4.逻辑运算符

(1)且、与and

x and y x和y都为真才为真,才返回True,否则返回False

print(10>2 and 20<5)

返回False

(2)或or

x or y x和y只要有一个为真

print(10>2 or 20<5)

返回True

(3)不not

print(not(10>2 and 20<5))

返回True

 

5.成员运算符

(1)in

如果在指定的序列中找到值返回 True,否则返回False。

(2)not in

如果在指定的序列中没有找到值返回 True,否则返回 False。

 

6.身份运算符

(1)is 是判断两个标识符是不是引用自一个对象

(2)is not 是判断两个标识符是不是引用自不同对象

 

7.运算符优先级

 Python基础知识

 

九、标识符

1.定义:Python 对各种 变量、方法、函数等命名时使用的字符序列称为标识符。

2.命名规则

(1)由 26 个英文字母大小写,0-9 ,_ 组成。

(2)不能以数字开头。

(3)严格区分大小写。

(4)不能包含空格、@、% 以及 $ 等特殊字符。

(5)不能以系统保留关键字作为标识符。

 

十、关键字

1.定义:关键字是预先保留的标识符,每个关键字都有特殊的含义。(在编译器中显示为深蓝色的特殊字符)

2.包含:

and、or、class、def、if、else、elif、for、while、True、False、try、expect、raise、Finally、as、break、continue、from、global、import、in、is、not、pass、return、with、assert、None、del、lambda、nonlocal、yield

3.判断方法:

keyword.iskeyword('and')

如果是关键字,返回 True;否则,返回 False。

 

十二、传统的格式化输出%

a.输出整数 %d

举例:将45.123输出为整数

print('%d'%45.123)

结果:45

b.输出浮点数 %f

举例:将45输出为浮点数

print('%f'%45)

结果:45.000000

c.指定输出小数点位数:%.2f

举例:将45.123输出为保留俩位数的浮点数

print('%.2f'%45.123)

结果:45.12

d.输出字符串%s

举例:将45.123输出为字符串

print(type('%s'%45.123))

结果:<class 'str'>

e.字符串截取%.2s保留2个长度的字符串

举例:将字符串'dsfgd'保留2个长度的字符串

print('%.2s'%'dsfgd')

结果:ds

f.百分数

举例:将45转化为百分数输出

print('%.f%%'%45)

结果:45%

 

十三、习题

1.手动输入自己的名字,使用三种方式输出我的名字叫什么

name=input("请输入自己的名字:")

print("我的名字叫:",name)

print("我的名字叫:"+name)

print("我的名字叫:{}".format(name))

 

2.请用知道的方法,注释掉以下语句

print("hello Spon")

print("我的名字叫小邦")

 

3.请写出变量的三种类型,并且写出各自包含的内容

①数值类型:浮点数、整数、复数、布尔数

②非数值类型:字符串

③对象类型:列表、字符串、字典

 

4. 请判断以下可以作为标识符的变量有哪些

①input_name ②886 ③for ④insert ⑤num2 ⑥True ⑦print ⑧CHeck ⑨xiaoming@ ⑩ hello world ⑪return ⑫music%s ⑬_root ⑭FileName ⑮add. ⑯-replace ⑰print^name ⑱i1s ⑲index ⑳format

① ④ ⑤ ⑦ ⑧ ⑬ ⑭ ⑱ ⑲  ⑳

 

5.请写出下列输出语句

a=15.15645 b='fgxfdbg'

(1)请将a保留3位小数输出

print('%.2f'%a)

(2)请将a输出为整数

print('%d'%a)

(3)请将b保留3位字符输出

print('%.3s'%b)

(4)请将a保留2位小数并且输出为百分数

print('%.2f%%'%a)

 

6.请写出变量的命名规则

(1)由26个字母,0-9数字,下划线组成

(2)不能以数字开头

(3)不能包含特殊字符%¥#@.&*

(4)不能直接引用关键字

 

7.a=4,b=10,c=30,请写出a、b、c的和,c除以a的余数及其商的整数,b的a次方幂

print(a+b+c)

print(c%a)

print(c//a)

print(b**a)

 

序列类型

一、列表list

列表是python最基本的数据结构,它的下标是从0开始,列表值是放在方括号内

列表定义

list = ["码上开始", 1, 'hello']

1.访问列表的值

(1)下标索引取值:列表内部的元素是有顺序的,从0开始,可以通过下标获取对应的值

print(list[0])

结果:"码上开始"

print(list[-1])

结果: 'hello'

(2)index:查找位置

print(list.index('hello'))

结果:2

(3)count:查找列表值出现的次数

print(list.count('hello'))

结果:1

(4)sort:字母或者数字默认按升序排列

list1 = ['dsvd','zgbd','hjs']

list2= [12,52,1]

list1.sort()

list2.sort()

print(list1)

print(list2)

结果:['dsvd','hjs','zgbd']

结果:[1,12,52]

2.更新列表的值

修改元素的值:列表是可变类型数据,可以通过下标修改制定位置的元素

list[1] = 3

结果:["码上开始", 3, 'hello']

3.增加列表数值

(1)list.append(3)#值

        结果:["码上开始", 1, 'hello',3]

(2)list.insert(1,123)#位置,值

        结果:["码上开始", 123,1, 'hello']

(3)extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

         list1 = [123, 'xyz', 'zara', 'abc', 123]

         list2 = [2009, 'manni']

         list1.extend(list2)

         print(list1)

         结果: [123, 'xyz', 'zara', 'abc', 123,2009, 'manni']

4.删除列表数值

list.pop(2)#位置

结果:["码上开始", 1]

list.remove(1)#值

结果:["码上开始",  'hello']

list.clear()#删除全部

结果:[]

 

二、元组tuple

1.元组定义:

(1)Python 的元组与列表类似,不同之处在于元组的元素不能修改。

(2)元组使用小括号,列表使用方括号。

(3)元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

(4)定义元组:

         tuple = (1, "码上开始",“hello”)

         tuple=(1,)只有一个数据的时候需要注意加逗号

(5)访问元组,下标索引取值:列表内部的元素是有顺序的,从0开始,可以通过下标获取对应的值

         print(tuple(0))

(6)修改元组(重点:元组是不能修改值)

 

三、字典dict

1.定义:字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所

示:

dict = {key1 : value1, key2 : value2 }

2.创建字典

dict = {"name": "python", "num": 1}

3.访问字典的值

print(dict["name"])

结果:python

4.访问字典的键

print(dict.keys())

结果:dict_keys(['name', 'num'])

5.访问字典的值

print(dict.values())

结果:dict_values(['python', 1])

6.修改字典

dict["name"] = "码上开始"

结果:{"name":  "码上开始", "num": 1}

7.添加新的值

dict['age'] = 28

结果:{"name":  "码上开始", "num": 1,'age':28}

8.删除

dict.pop("name")

结果:{'num': 1}

 

四、字符串str

1.字符串定义:单引号、双引号、三引号、str()

s='hello word'

s=”hello word”

s='''hello word'''

s=str(123456)

空字符串定义:s=“

2.字符串常见操作:

(1)字符串拼接:+

print('我的名字叫'+'小明')

结果:我的名字叫小明

(2)字符串的输出:print(),输出多个不同的数据用逗号隔开

name = "小明"

print("我的名字叫:" , name)

结果:我的名字叫小明

(3)字符串转义: \n换行, r“ ” 防止转义

①转义字符:ASCII 编码为每个字符都分配了唯一的编号,称为编码值。在 Python 中,一个 ASCII 字符除了可以用它的实体(也就是真正的字符)表示,还可以用它的编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。在python中转义字符,就是那些以反斜杠\开头的字符。

②转义字符:\n    \r     \t      \a       \b     \\     \'     \”      \,简单来说就是这几个字符在python里面有特殊意义,要想让它变成字符的形式就要不让它转义

③举例:

print('\n')

结果:输出换行

print(r'\n')

结果:\n

 Python基础知识

 

(4)下标取值:[]

s='hello word'

print(s[3])

结果:l

(5)字符串常见的方法:

①join:连接字符串数组。将字符串、元组、列表中的元素(元素为字符串)以指定的字符(分隔符)连接生成一个新的字符串

语法格式:separator.join(str/tuple/list)

separator:分隔符

举例:

a=['sdf','hiuhk','fefgsdf']

res=':'.join(a)

print(res)

结果:sdf:hiuhk:fefgsdf

②find:查找字符串元素的位置

举例:

s='我的名字叫:小明'

print(s.find("字"))

取第二个字符的位置

a='fdsdddssssbb'

s=a.find('s',a.find('s')+1)

结果:6

③count:查找元素的个数

举例:

a='fdsdddssssbb'

print(a.count('s'))

结果:5

④replace:替换

举例:

a='dfgffghdfgf'

print(a.replace('f','1'))

结果:d1g11ghd1g1

⑤split:分割

语法格式:str.split(str="",num=string.count(str))

参数说明:

str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素

num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串

举例1:

txt = "hello word"

print(txt.split())

结果:['hello', 'word']

举例2:

txt='dsvfvfdvfdsv'

print(txt.split('f',2))

结果:['dsv', 'v', 'dvfdsv']

⑥大小写转换

upper:转变为大写

lower:转变为小写

举例:

s='GUukygGYF'

print(s.lower())

print(s.upper())

结果:guukyggyf

      GUUKYGGYF

⑦格式化输出

name='小明'

print('我的名字叫:{}'.format(name))

结果:我的名字叫:小明

⑧切片

语法格式:str[首:尾:步长] 取头不取尾,默认为1

举例1:

s='asdfghjdthh'

print(s[1:3])

结果:sd

举例2:

print(s[2:5:2])

结果:dg

举例3:

print(s[2:10:3])

结果:dht

 

五、对象类型转化

1.列表转元组、字符串、字典

lis=[12,45,45] lis1=[56,12,88]

tup=tuple(lis) strs=str(lis) dic=dict(zip(lis,lis1))#zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

2.元组转列表、字符串、字典

tup=(12,45,55) tup1=(52,55,85)

lis=list(tup) strs=str(tup) dic=dict(zip(list(tup),list(tup1)))

3.字符串转列表、元组、字典

strs='hkukh' strs1='awslkj'

lis=list(strs) tup=tuple(strs) dic=dict(zip(list(strs),list(strs1)))

4.字典转列表、元组、字符串

dic={'dc':12,'dc':45,'dc':4,'dc':21}

 list(dic.items())  tuple(dic.items())  strs=str(dic)

 

六、习题

1.请写出列表、字典、字符串增删改查和元组查的方法

 

2.请写出下列语句

a=18

list=[10,12,17,15,14,13,16,11]

list1=[786,45,78]

(1)请将list按照升序进行排序

list.sort()

(2)请用俩种方式将a添加进list列表里面

list.append(a)     list.insert(8,a)

(3)请用俩种方式删除list里面的元素17

    list.remove(17)  list.pop(2)

(4)请将列表list1添加进list列表里面

list.extend(list1)

 

3.请写出元组和列表的区别

1.定义不同,一个是圆括号一个是方括号  2.元组只能查,不能修改,列表可以增删改查

 

4.请写出下列语句

(1)小明在麓谷小学读三年级,请将小明的姓名、学校、年级信息添加到字典里面

data={}

data['姓名']='小明'

data['学校']='麓谷中学'

data['年级']='三年级'

print(data)

(2)俩年以后小明转到尖山湖小学读五年级,请在第一问的基础上对字典信息进行修改

data['姓名']='小明'

data['学校']='尖山湖中学'

data['年级']='五年级'

print(data)

 

5.请写出下列语句

strs='sdfggkrfgdmfg'

(1)请查找出第3个’g‘的位置

index=strs.find('g',strs.find('g',strs.find('g')+1)+1)

print(index)

(2)请查找出字母’g'出现的次数

time=strs.count('g')

print(time)

(3)请将字母g用’a‘替换

new_strs=strs.replace('g','a')

print(new_strs)

(4)请将字符串strs转换成大写

new_strs=strs.upper()

print(new_strs)

(5)请将字符串按‘f'分割符进行分割

new_strs=strs.split('f')

print(new_strs)

(6)请用切片输出字符’kfdf‘

new_strs=strs[5:12:2]

print(new_strs)

 

6.请写出下列语句

list=['a','b','c','d'] list1=[12,13,14,15]

(1)请将list转化为字符串、元组,将list和list1转化为字典

strs=str(list)

tup=tuple(list)

dic=dict(zip(list,list1))

 

函数

一、定义:

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。例如:input、print

 

二、作用:

函数能提高应用的模块性,和代码的重复利用率。

 

三、函数分类:

函数分为内置函数与自定义函数

 

四、常用内置函数:

1.type()

(1)作用:返回数的数据类型

(2)举例:

a=[13,46,352]

b={"use":"admin"}

c='sfdvfd'

d=(12,45)

①print(type(a))#<class 'list'>

②print(type(b))#<class 'dict'>

③print(type(c))#<class 'str'>

④print(type(d))#<class 'tuple'>

 

2.eval()

(1)作用:eval() 函数用来执行一个字符串表达式,并返回表达式的值。

(2)举例:

①print(eval('12*13'))

结果:156

②print(eval('{"use":"admin"}'))

结果:{"use":"admin"}

③print(type(eval('{"use":"admin"}')))

结果:<class 'dict'>

 

3.数据类型强制装换

(1)dict()

①作用:将一对数据强制装换为字典,必须是有一对值

②a=[('gjhj','klm'),('bgfb',2)]

print(dict(a))

结果:{'gjhj': 'klm', 'bgfb': 2}

③a=(['gjhj','klm'],['bgfb',2])

print(dict(a))

结果:{'gjhj': 'klm', 'bgfb': 2}

(2)list()

①作用:将数据装换为列表

②举例:

a='fdgfg'#字符串

b={'hk':'1435','gyjg':'hb'}

c=(12,453)

②print(list(a))

结果:['f', 'd', 'g', 'f', 'g']

③print(list(c))

结果:[12, 453]

④print(list(b))

结果:['hk', 'gyjg']

(3)tuple()

①作用:将数据装换为元组

②举例

a='fdgfg'

b={'hk':'1435','gyjg':'hb'}

c=[12,453]

③print(tuple(a))

结果:('f', 'd', 'g', 'f', 'g')

④print(tuple(c))

结果:b={'hk':'1435','gyjg':'hb'}

⑤print(tuple(b))

结果:('hk', 'gyjg')

(4)str()

①作用:将数据装换为字符串

②举例:

a=(12,463)

b={'hk':'1435','gyjg':'hb'}

c=[12,453]

print(type(str(a)))

结果:<class 'str'>

print(type(str(b)))

结果:<class 'str'>

print(type(str(c)))

结果:<class 'str'>

 

4.set()

(1)作用:set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

(2)举例:a=[12,45,123,4,15,864,5,45,5,123,46,4]

b=set('sdccvdfvckl')

c=set('fdvdscddcshy')

①print(set(a))#去重复

结果:{864, 4, 5, 12, 45, 46, 15, 123}#返回的是一个集合

②print(list(set(a)))#强制装换为列表,实现去重复

结果:[864, 4, 5, 12, 45, 46, 15, 123]

③print(eval('c&b'))#交集

结果:{'c', 'd', 'f', 's', 'v'}

④print(eval('c|b'))#并集

结果:{'y', 'c', 'd', 'k', 'l', 'f', 'h', 's', 'v'}

⑤print(eval('c-b'))#差集

结果:{'k', 'l'}

⑥print(eval('c^b'))#补集

结果:{'k', 'h', 'y', 'l'}

 

5.sorted()

(1)作用:排序

(2)举例:

①升序:

a=[15,13,54,1,53,22,5]

print(sorted(a))

print(sorted(a, reverse=False))

结果:[1, 5, 13, 15, 22, 53, 54]

②降序:

print(sorted(a, reverse=True))

结果:[54, 53, 22, 15, 13, 5, 1]

③元组或列表:

a=[('b',2),('a',1),('c',3),('d',4)]

b=[['b',2],['a',1],['c',3],['d',4]]

升序:

print(sorted(a, key=lambda x:x[1]))

结果:[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

降序:

print(sorted(b, key=lambda x:x[1], reverse=True))

结果:[['d', 4], ['c', 3], ['b', 2], ['a', 1]]

 

6.字符转换

(1)int()

①作用:用于将一个字符串或数字转换为整型。

②语法格式:class int(x, base=10)

x -- 字符串或数字。

base -- 进制数,默认十进制。

③举例:

a='12'

b=12.2

#将字符串转化为整型

print(type(int(a)))

结果:<class 'int'>

#将浮点数转化为整型

print(type(int(b)))

结果:<class 'int'>

(2)float()

#将字符串转化为整型

print(type(float(a)))

结果:<class 'int'>

#将浮点数转化为整型

print(type(float(b)))

结果:<class 'int'>

 

7.sum()

(1)作用:sum() 方法对序列进行求和计算。

(2)语法格式:sum(iterable[, start])

参数:

iterable -- 可迭代对象,如:列表、元组、集合。

start -- 指定相加的参数,如果没有设置这个值,默认为0。

(3)举例:

print(sum([0,1,2]))

结果:3

print(sum((2, 3, 4), 1)) # 元组计算总和后再加 1

结果:10

print(sum([0,1,2,3,4], 2))  # 列表计算总和后再加 2

结果:12

 

8.len()

(1)作用:返回对象(字符、列表、元组等)长度

a = "jhukhk"

print(len(a))  # 字符串长度

结果:6

b = [1, 2, 3, 4, 5]

print(len(b))  # 列表元素个数

结果:5

 

9.random()

(1)作用:返回随机生成的一个实数

(2)举例:

import random

① 随机整数:

print(random.randint(1,50))

② 随机选取0到100间能被2整除的数:

print(random.randrange(0, 101, 2))

③ 随机浮点数:

print(random.uniform(1, 10))

④ 随机选取字符串:

print(random.choice(['剪刀', '石头', '布']))

⑤打乱排序

items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

random.shuffle(items)

print(items)

 

10.round()

(1)作用:保留小数点后多少位数,返回浮点数x的四舍五入值

(2)举例:

print(round(80.23556, 2))

结果:80.24

 

11.strip

(1)作用: 字符串去掉字符串开头和结尾的指定字符,默认为空格或换行符

(2)举例:

a='dddjlkn\n'

strs = a.strip('\n')

print(strs)

#输出:dddjlkn

 

五、习题

1.请写出下列代码语句

lists=[45,23,84,11,25,46,86,45,23,45,11]

(1)请将列表lists按照降序排列

list_sort=sorted(lists,reverse=True)

print(list_sort)

(2)请去除lists重复的元素,返回一个列表

list_set=list(set(lists))

print(list_set)

(3)请求出列表lists所有元素的和

print(sum(lists))

(4)请求出列表lists的长度

print(len(lists))

2.利用随机函数,写出一个随机出一个剪刀、石头或布的代码语句

play=random.choice(['剪刀','布','石头'])

print(play)

3.请将a变成一个只保留3位数的浮点数b

a=56.333333333

b=round(a,3)

 

控制流程语句

一、条件判断语句

1.if

(1)判断条件为单个:

if 判断条件:

执行语句……

else:

执行语句……

(2)运行流程:其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。

(3)举例:

a=10

b=15

if a<b:

    print('a小于b')

else:

    print('a大于b')

结果:a小于b

(4)当判断条件为多个值时,可以使用以下形式:

if 判断条件1:

执行语句1……

elif 判断条件2:

执行语句2……

elif 判断条件3:

执行语句3……

else:

执行语句4……

(5)运行流程:

由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断

时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。

(6)举例:

import random

a=random.randint(1,999)

if len(str(a))==1:

    print('{}是一位数'.format(a))

elif 3>len(str(a))>=2:

    print('{}是两位数'.format(a))

else 4>len(str(a))>=3:

    print('{}是三位数'.format(a))

year=int(input('请输入年份:'))

if year%400==0 or (year%4==0 and year%100!=0):

    print('{}年是闰年'.format(year))

else :

    print('{}年是平年'.format(year))

 

二、循环语句

1.while

(1)基本格式:

while 判断条件:

执行语句……

else:

执行语句……

(2)运行流程:

执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假false时,循环结束。

(3)举例:

count = 0

while count < 5:

    print(count, " is less than 5")

    count = count + 1

else:

    print(count, " is not less than 5")

 

无限循环

a=100

while True:

    print(a)

    a=a-1

    if a<=0:

        break

#当运行碰到break时,循环结束,否则一直运行。

 

2.for

(1)作用:for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

(2)语法格式:

for i in range(num):

    #执行语句

#系统会自动将num的数从第一个到最后一个给i,num如果不指定区间数,将以默认为0开头,取头位数,不取尾数位。

for i in list:

#list为列表,系统会自动将list的数从第一个到最后一个给i,知道list数给完。

(3)举例:

①求一个数列:1/2+1/4+1/6+1/8....,求前20项的和

sum=0

for i in range(1,41):

    if i%2==0:

        sum=1/float(i)+float(sum)

        print(round(sum,2))

②冒泡排序

xuhaos=[15,165,12,663,654,2,232,17,52]

for x in range(0, len(xuhaos) - 1):

  for i in range(0, len(xuhaos) - 1):

    if xuhaos[i + 1] > xuhaos[i]:

      b = xuhaos[i]

      xuhaos[i] = xuhaos[i + 1]

      xuhaos[i + 1] = b

print(xuhaos)

#输出:[663, 654, 232, 165, 52, 17, 15, 12, 2]

③99乘法表

for y in range(1,10):

  for x in range(1,y+1):

    print('{}*{}={}'.format(x,y,x*y),end=' ')

  print('\n')

三、习题

1.输入年份,判断是为闰年(能被400整除,或者能被4整除但是不能被100整除)还是平年

year=int(input('请输入年份:'))

if year%400==0 or (year%4==0 and year%100!=0):

    print('{}年是闰年'.format(year))

else :

print('{}年是平年'.format(year))

 

2.随机生成一个数1000以内的数判断是几位数

import random

a=random.randint(1,999)

if len(str(a))==1:

    print('{}是一位数'.format(a))

elif 3>len(str(a))>=2:

    print('{}是两位数'.format(a))

else 4>len(str(a))>=3:

print('{}是三位数'.format(a))

 

3.求一个数列:1/2+1/4+1/6+1/8....,求前20项的和

sum=0

for i in range(1,41):

    if i%2==0:

        sum=1/float(i)+float(sum)

        print(round(sum,2))

 

4.冒泡排序

a=[14,56,111,42,12,32,95,22,61]

for x in range(len(a)-1):

    for y in range(len(a)-1):

        if a[y]>a[y+1]:

            b=a[y]

            a[y]=a[y+1]

            a[y+1]=b

print(a)

 

5.99乘法表

for x in range(1,10):#行

    for y in range(1,x+1):#列

        print('{}*{}={}'.format(x,y,x*y),end=' ')

    print('\n')

 

 

异常处理

一、定义:

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

 

二、语法格式:

1.第一种:

try:

    #执行语句

expect Expection:

    #执行语句

2.第二种:

try:

    #执行语句

expect Expection as e

     raise e

finally:

     #执行语句

(1)Expection属于万能异常,更多异常类请看博客

(2)as e 捕捉到异常程序报错,但是程序不会停止运行,e是异常信息

(3)raise e 主动触发异常,程序控制台报错,程序停止运行

(4)finally不论运行完try或者expect都会运行一次finally

(5)traceback.print_exc() 可以用来查看异常的传播轨迹,追踪异常触发的源头。

 

三、举例:

try:

#语句

    print('dc'+1)

except Exception as e:#Exception万能异常

    print('***程序出现错误***')

    print(e)#打印异常信息,不打印行号,程序继续运行

    traceback.print_exc()#查看程序异常信息,打印行和异常信息,程序继续运行

    raise e#主动触发异常,打印行号和异常信息,程序停止运行

finally:#无论执行try还是except都会执行,主动触发异常程序停止运行时继续运行

    print('66666')

print('888888')

 

四、应用场景

1.代码出现问题时程序不会立马崩溃,写出日志

2.提供俩个选项,作出选择

 

五、出错点

1.长度函数用整数 2.input输入浮点数 3.字符跟整数拼接 4.文件读取无此文件

 

文件读写

一、打开文件

open() 方法

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该

文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

 

二、语法格式:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)

参数说明:

file: 必需,文件路径(相对或者绝对路径)。

mode: 可选,文件打开模式  'r' 'w' 'a' ,'w'会清空文字

buffering: 设置缓冲

encoding: 一般使用utf8

errors: 报错级别

newline: 区分换行符

closefd: 传入的file参数类型

一般只用到file,mode和encoding

 Python基础知识

 

三、文件写入:

写入单行 write

file=open("text.txt","a")

file.write("今天天气好"

写入多行 writelines

file.writelines([1,2,3])

保存文件 flush

file.flush()

 

四、读取文件:

读取单行 read

res=f.read()

读取多行 readlines

file.writelines()

 

五、文件定位

tell() 方法告诉你文件内的当前位置

seek(offset,from)方法改变当前文件指针的位置

offset:变量表示要移动的字节数 正和负数

from:变量指定开始移动字节的参考位置,默认为1

 

 

0:参考位置为文件开头

1:参考位置设为当前所在位置

2:参考位置设为文件结尾

file=open('test.txt','r')

file.tell()

file.readline()

file.seek(0)

 

六、with open

       我们写入文件内容时,系统并不会立刻就把所有数据写入到磁盘,它是先放到内存中缓存,等到空闲的时候再慢慢写入到磁盘。当调用close()方法时,系统才能保证把剩余没有写入的数据全部写入到磁盘。假如我们忘记调用了close()方法,那很可能导致我们的数据遗失。为了保证万无一失,最好是使用with open()进行内容的读写。

 

七、写入

.write:写入的是一个字符串

.writelines:注意写入的必须是字符串,可以是列表

.read() 每次读取整个文件,它通常将读取到底文件内容放到一个字符串变量中,也就是说 .read() 生成文件内容是一个字符串类型。

.readline()每只读取文件的一行,通常也是读取到的一行内容放到一个字符串变量中,返回str类型。

.readlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型。

 

上一篇:课程模块 -- 多表查询


下一篇:Java访问控制权限