测试学习笔记(P51-P71教程from凡云教育)之python基础
P51
编程基本概念
程序是一段可以由计算机执行的代码。
程序= 语法+算法+数据结构
P52
New project创建时选择现有解释器即可;
P53
学习一门语言究竟要学什么:
输入输出
数据类型
控制结构
函数定义
对象定义
文件读写
异常处理
Python 运行的三种方式:
- 交互式解释器种直接运行python代码(cmd敲python进入)
- 命令行的方式运行python代码(cmd)
- 用编辑器运行python代码(pycharm等)
P54
Python语言基础
input()接受用户输入,默认返回值是字符串
X=int(input(“enter your number:”))--转型输入为整型
print() 逗号分隔参数,默认换行显示(end=’\n’,不想要换行可以写成end=’’)
print(“hello”,”world”,”!”)
P55
Python种使用变量需要注意的点:
- Python中的变量不需要类型声明,变量类型由赋值给它的数据类型决定;
- 每个变量在前都必须先被赋值,变量赋值后该变量才被创建;
- 等号用来赋值,等号左边的是变量名,右边的是存储在变量中的值。
python保留关键字查询:cmd进入解释器,输入keyword module 即可查询。
Python命名规则:
- 以字母下划线开头,剩余部分字母、数字、下划线均可。 py文件不要使用-符号、不要以数字开头
- 大小写敏感。使用大写首字母可以有效避开关键字。
- 变量名不要使用关键字
- 尽量用能够表征变量含义的变量名(见名知意)
P56
占位符
格式占位符(%)是在python语言中格式输入函数,如print()等函数中使用,其意义就是起到格式占位的意思,表示在该位置有输入或者输出。
%d,整数,print("我今年%d岁了"%(18))
%f,浮点数(默认6位小数),print('%.3f'%(22.3))
%s,字符串,print("hello,%s和%s"%('小明','小红'))
%%,表示%符号本身,print("大概有%d%%"%(40))
format方法,支持不指定数据类型的占位
print("我今年{}岁了".format(18))
print('{}'.format(22.3))
print("hello,{}和{}".format('小明','小红'))
print("大概有{}%".format(40))
f方法更简单
b=3.1415926
a='小兰'
print(f"Π的值是{b},学生姓名{a}")
注释#、三引号、
缩进,四个空格或者tab
P57
安装python
P58
数据类型:
Number数字 string字符串 tuple元组 (不可变)
List列表 Set集合 Dictionary字典 (可变)
可变数据类型:改变数据的值并不会产生一个新的对象,变量仍然指向原来的对象(地址id不变)
不可变数据类型:但是改变了数据的值之后,这个值就将变成另一个对象的数据类型,叫不可变数据类型(地址id会变)
P59
数值型数据类型
整型、浮点型、复数
类型转换int(),float()
print(type(i))打印当前数据类型
print(15//2)整除(取商的整数)
print(15%2)取余
print(2**3) 2得三次方
math库常用方法
print(math.ceil(-4.5))# 取大于等于当前数的最小整数
print(math.fabs(-2.5))# 取当前数的绝对值
print(math.floor(-2.5))# 取小于等于当前数的最大整数
print(math.pow(2,3))# 2的3次方
print(math.sqrt(16))# 16开方
Random 模块
print(random.random())返回[0.0,1.0)之间的浮点数。
random.randint(a,b)生成一个[a,b]之间的随机数
random.randrange(a,b)生成一个[a,b)之间的随机数
random.uniform(a,b)生成一个[a,b]之间的随机浮点数
random.choice([])从列表中随机取出一个元素
random.shuffle([])打乱列表中元素的顺序
random.sample([],n)从序列中随机取出n个值
P60
字符串类型
单双三引号括起来的值或者赋值给的变量都是属于字符串类型
字符串中单双三引号不能混用
三引号一般用于代码注释或保持样式的长字符串输出
字符串切片
str = '1234567890'
print(str[-5:9:1])
结果:6789
[start:end:step]
Step为正时,start要在end左边,无论如何标序。
Step为负时,start要在end右边,无论如何标序。
print(str[::-1]) 倒序输出
print(str[-1:5:-1]) 0987
P61
原始字符串
s=r”c:/software/npatcge”
Print(s)
P62
字符串处理
print(len(s));字符串长度
print(s.count(‘1’,5,len(s)))从第五位
print(s.capitalize()) 首字母大写
print(s.find(‘1’))查找返回序号,无则返回-1
print(s.replace(‘90’,’aa’)) 替换
print(s.split(‘5’))用5做切分,结果['1234', '67890']
print(str.index('h')),index用法通find,但没找到字符程序会报错
print(str.isdigit()) ture 是否只包含数字,isalpha是否只包含字母
islower,字符串包含字母且所有字母小写,则true
isspace 字符串只包含空格则true
istitle 字符串标题化则true
lower,转小写
print(str.startswith('6', 5, len(str)-1)) 是否以指定字符串开头,返回值true/false
print(str.strip('1')) strip,默认去空白,也可指定,只能去两边的
‘’.join()方法,以指定符号连接后面列表的字符串内容,以字符串形式返回
a=[‘h’,’e’,’l’,’l’,’o’], print(‘’.join(a))
P63
列表
容器型数据类型,可以用于存放其他数据类型的数据类型
list1=[‘oh’,’my’,’god’]
list2=list1
两个列表指向同一块内存区域;
list2=list1[:] 或者 list2=list1.copy()
两个列表指向不同的内存区域,但列表内容相同;
列表嵌套
list1=['a', ['b', 'c', 'd'], 'e']
print(list1[1][2])
取d的写法
列表常用方法:
list.append(obj)列尾添加新对象
list.count(obj)统计某个元素在列表中出现的次数(嵌套列表的元素不计入)
list.extend(seq)在列表末尾一次性追加另一个序列的多个值;list1+list2效果等于list1.extend(list)
List.insert(位数,值)列表指定位置添加值
list.pop(位数)删除指定位置的元素
list.remove(值)删除值为指定的元素
list.reverse()把列表倒序
list.sort()、list.sort(reverse=true)排正、倒序,数值型的列表有意义
Min\max\sum对于数值型列表求和使用
list()方法:a=list(‘hello’), a=[‘h’,’e’,’l’,’l’,’o’]
List(range(start,end=None))快速生成指定范围内数字列表
P64
元组与列表类似,区别有两点:
- 用小括号 元组元素不能修改
如果元组的元素只有一个,必须要在元素后加一个逗号才会认为时元组
tuple(seq),将列表转换成元组
P65
集合(set),无序不重复的元素集,主要用于消除重复元素
S={}
Set([])列表强转为集合,其他类型也可强转
add\remove\del删除整个集合\clear清空\len
st1={'g','o','o','d'}
for item in st1:
print(item)
P66
字典,无序的对象集合,字典中的元素通过键来存取,键不重复。
字典中的键必须时不可变数据类型。
dic1=dic2地址相同
dic1=dic2.copy()值相同
dic.clear()清空列表
dic.fromkeys([])创建以列表值为键的字典
dic3= dict.fromkeys(['id','num','price'])
print(dic3)
结果
{'id': None, 'num': None, 'price': None}
dic.get(key,default=None)
取键的值;键不存在时返回none
dic1.get(key1) 等同与dic1[key],但是当key不存在时dic1[key]会抛异常
dic.update(dict2)
把的dict2键值对合并到dict1中
dic.keys()取键
print(dic1.keys())
结果dict_keys([‘’,’’,’’])
dic.values()取值
print(dic1.values())
结果dict_values([‘’,’’,’’])
dic.items()取键和值
print(dic1.items())
结果dict_items([(),(),()])
dic.popites()随机删除一个键值对
dic.pop(key)删除指定键值对
P67
If else
P68
循环结构
for用于已知集合进行循环,如列表、集合、字典、range数字循环
While用于知道循环条件,比如大于某个值、值为真。
循环嵌套判断
例1
for x in name:
if x=='wangwu':
# break 打印遇到wangwu时终止且wangwu不做打印
Continue 打印遇到wangwu时不做打印,继续循环直到列表循环完
print(x)
例2
for x in name:
if x=='wangwu1':
print('found')
break
else:
print('notfound')
占位符:pass
P69
函数:
内置函数,print等
模块函数,导入模块后使用 import random;第三方模块放在lib/site-package中
自定义函数
嵌套函数(埋个装饰器)
P70
函数参数相关
return后面的语句不执行
没有return的函数返回值为none
改变形参得值是否会使实参值改变,取决于参数的数据类型:
参数是不可变数据类型,则不会改变
参数是可变数据类型,则会改变
位置参数(位置一一对应)
关键字参数(键值对形式,用等号连接,可以不安位置顺序对应)
默认值参数(调用时没有传参数则使用默认值,默认值在函数声明时指定)
不定长参数:
*args传递元组形式不定长参数;**kwargs传递字典类型的不定长参数,要求写在*args之后
lst=[1,2,3,4,5]
printinfo(1,*lst)------此处*表示将lst自动解包,作为N个参数传递给函数
P71
想在函数给全局变量重新赋值(=),需要在函数内使用关键字global 变量;读取全局变量不需要加;如果调用该变量的方法不是重新赋值,比如修改列表,可以不用加,如 list.append
如果函数内有与全局变量重名的变量,则需要用global加以区分;