1 Python简介
- python应用用途:写代码帮你测试、网络爬虫、数据分析、web开发、人工智能、自动化运维、自动化测试、嵌入式开发、黑客
- python特点:第三方库特别多,安装后即可使用。所以python上手比较容易(eg.xpin模块,将中文转换成拼音)
- 自动化测试主流开发语言:java、python(自动化测试开发语言与被测系统的开发语言没有关系)。python不是脚本语言。脚本语言是比较单一
- 主流开发语言:java、python、php、ruby 开发语言分为:
- 编译型语言:编译型语言,在运行代码之前,首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。eg. c/c++/c#。
- 解释型语言:相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。运行效率没有编译型语言快。eg. Python/JavaScript /ruby/Perl /Shell等都是解释型语言。
- Python版本:2.x 及3.x,现在基本用3.x
2 Python安装
- 下载安装包,windows下直接傻瓜式安装
- 配置环境变量:python.exe路径
- python执行:
- pycharm工具:可以自动补全命令,推荐使用。
-
- pycharm交互式:快速运行。可用于调试。
-
- 交互式编辑工具:自带的Idle.exe。特点:输入代码后回车,自动执行。没有自动补全功能,不好用。了解即可。
- 命令行模式:cmd输入Python,直接编辑代码。缺点也是不能自动被全命令,不好用。
3 Pycharm常用设置
3.1pycharm常用快捷键
-
Ctrl+Shift+F10 运行当前的页面
Ctrl + / 注释(取消注释)选择的行 (加#号单行注释,加3个单引号前后括起来实现多行注释)
Ctrl+Shift+F 高级查找
Shift + Enter 开始新行
TAB Shift+TAB 缩进/取消缩进所选择的行
Ctrl + Y 删除当前插入符所在的行
Ctrl + D 复制当前行、或者选择的块
Ctrl + Shift + J 合并行
Delete 删除到字符结尾
Backspace 删除到字符的开始
Ctrl + NumPad+/- 展开或者收缩代码块
Ctrl + Shift + NumPad+ 展开所有的代码块
标签页右键→Split Vertically 分屏显示
3.2pycharm常用调试
- 在代码行号处单击,打断点
- 右键debug
- 按如下按钮执行下一步(或按F8),检查变量值及执行的代码行
4 Python基础
4.1 python语法
- tab缩进:Python以缩进来区分代码块。只要有冒号":",下一行代码要加上缩进(可参考条件判断案例)
- 分号:python在代码末尾可以不需要加分号";"
- 等号:判断符号中,需要使用2个等号”==“
- 百分号:格式化用如%s,如果想表示百分号,每打一个百分号,需要2个百分号,如打印%%,需要写%%%%
4.2 数据类型
- int()--整型、str()--字符串、float()--小数、list--数组
4.2.1 int
a // b 表示用a除以b,把小数位舍掉
- 数据类型转换:
1 # input默认都是string类型,整型数字需要通过int(xxx)进行转换 2 age = input ('请输入年龄:') 3 print ('1',type(age)) 4 age = int (age) 5 print ('2',type(age))
1 # 运行结果如下: 2 请输入年龄:20 3 1 <class 'str'> 4 2 <class 'int'>
4.2.2 string
- string格式化:
1 # 格式化字符串:登录成功提示 2 import datetime 3 user = 'zr' 4 today = datetime.date.today() 5 today = str(today) 6 #1、+: 使用+号拼接,不推荐使用 7 msg1 = '欢迎光临'+user+',今天的日期是:'+today 8 # 2、%s: 推荐使用,使用%s等占位。%s:格式化为字符串 9 msg2 = '欢迎光临%s,今天的日期是:%s ' %(user,today) 10 # 3、format:推荐使用,使用{}占位。在参数值较多的情况下更直观,不需要按顺序赋值 11 msg3 = '欢迎光临{name},今天的日期是:{date} '.format(date=today,name=user) 12 sql = 'insert into {} value {}:'.format('a1,','b2') # {}内可以为空,这种方式format是按顺序赋值 13 d = {'name':'小黑','sex':'女'} 14 # 4、fomat_map: 与format的区别是format_map的参数是字典 15 words='名字:{name},性别:{sex}'.format_map(d) 16 print ('1=====',msg1) #print后自动换行 17 print ('2=====',msg2*3) #打印3遍,需要加手动换行 18 print ('3=====',msg3) 19 print('4=====',sql) 20 print('5=====',words)
1 1===== 欢迎光临zr,今天的日期是:2018-08-24 2 2===== 欢迎光临zr,今天的日期是:2018-08-24 3 欢迎光临zr,今天的日期是:2018-08-24 4 欢迎光临zr,今天的日期是:2018-08-24 5 6 3===== 欢迎光临zr,今天的日期是:2018-08-24 7 8 4===== insert into a1, value b2: 9 5===== 名字:小黑,性别:女
4.2.3 float
- int、float格式化:
1 # 格式化数字:年龄分数提示 2 age = input('请输入年龄:') 3 age1 = int (age) 4 score = input ('请输入分数:') 5 score1 = float(score) 6 msg1 = '年龄是:%d,分数是:%.3f'%(age1,score1) # %d: 格式化成整型;%.2f :格式化为2位小数 7 msg2 = '年龄是:%s,分数是:%s'%(age1,score1) # %s:可以显示字符串、数字 8 print (msg1) 9 print (msg2)
1 # 运行结果如下: 2 请输入年龄:20 3 请输入分数:90.61 4 年龄是:20,分数是:90.610 5 年龄是:20,分数是:90.61
4.2.3 list(列表)
-
List(列表) 是 Python 中使用最频繁的数据类型。列表是写在方括号([ ])之间、用逗号分隔开的元素列表。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
- 特点:
1、List写在方括号之间,元素用逗号隔开,下标从0开始。
2、和字符串一样,list可以被索引和切片。
3、List可以使用+操作符进行拼接。
4、List中的元素是可以改变的。
- 定义数组:
- 一维数组:listname = ['value1','value2','valuen']
- 二维数组:listname =[ [10,11,12],[20,21,22]],元素20的下标为listname[1][0]
- 三维数组:listname =[[10,11,12],[20,21,22,23,[31,32,33],5],3],元素32的下标为listname[1][4][1]
4.2.4 dictionary(字典)
- 字典(dictionary)是Python中另一个非常有用的内置数据类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
- 字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。
- 特点:
1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }。
4.3 变量
-
变量是存储在内存中的值。
- 定义变量:格式为key = value ,不需要声明数据类型,python会自动识别数据类型。变量名只能是 字母、数字或下划线的任意组合。变量名的第一个字符不能是数字。
- 批量定义变量:a,b,c,d=1,2,3,4 a=b=c=d=1
-
以下关键字不能声明为变量名
['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']
- 单引号与双引号的使用:
- 变量值中只包含单引号时,外部要用双引号括起来。
1 print ("I'm zr")
-
- 变量值中只包含双引号时,外部要用单引号括起来。
1 print ('肉肉长得很”帅”')
-
- 变量值中包含单引号及双引号时,外部要用3个单引号括起来。
1 print ('''I'm zr,肉肉长得很”帅”''')
-
- 3个单引号或者3个双引号括起来,也可以实现多行注释的效果
1 ''' 2 import random 3 num = random.randint(1,100) #随机产生的数字 4 print(num) 5 #代码都是从上到下运行 6 count = 0 7 while count<7: 8 count+=1 9 guess = input('请输入一个数字:') 10 guess = int(guess) #转成int类型 11 if guess>num: 12 print('猜大了') 13 elif guess==num: 14 print('恭喜你,猜对了') 15 break 16 else: 17 print('猜小了') 18 else: 19 print('错误次数过多') 20 '''
- 输入输出:
1 # 输入输出(只要是Input输入的,都是string类型) 2 name = input('请输入你的名字'); 3 print (name);
4.4 条件判断
- 格式:if xxx: code elif xxx: code elif xxx:code else: code
- 非空即真(if not username or not passwd or not cpasswd: xxxxx #username或passwd或cpasswd为空)
- 非零即真 (if i: xxxxx # i非0)
- 常用的条件判断符号:
- 等于 ==
- 大于 >
- 小于 <
- 大于等于 >=
- 小于等于 <=
- 不等于 !=,不能写<>
- 且 and,不能写&&
- 或 or
- 常用的运算符
- count +=1 (count = count+1)
- count -=1 (count = count-1)
- count *=1 (count = count*1)
- count /=2 (count =count/2)
- 基本嵌套条件判断:
1 # if else 2 name = input ('请输入名字:') 3 if name == "肉肉": 4 print ('你最帅!') 5 elif name == "小敏儿": 6 print ('你最美!') 7 else: 8 print ('哈哈哈!')
- 嵌套条件判断:
1 # 嵌套条件判断 2 name = input ('请输入名字:') 3 age = input ('请输入年龄:') 4 age = int (age) 5 if name == "肉肉": 6 print ('你最帅!') 7 if age > 30: 8 print (age,'成熟魅力男!!') 9 elif name == "小敏儿": 10 print ('你最美!') 11 else: 12 print ('哈哈哈!')
4.5 循环
- break:立即结束循环,不管循环有没有完成
- continue:结束本次循环,继续进行下一次循环
- Python中的for、while循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。换句话说,如果我们不是除正常以外的其他方式退出循环,那么else分支将被执行。也就是在循环体内没有break语句、没有return语句,或者没有异常出现。--引用https://www.cnblogs.com/gengcx/p/6707017.html
4.5.1 while 循环
- while循环,要带上计数器,如果使用continue,计数器不会累计,可能会产生死循环
- while + break
1 # while循环:猜数字游戏 2 import random 3 num = random.randint(1,100) # 随机产生一个1~100的数字 4 count = 0 5 while count < 3: 6 guess = input ('请输入你猜的数字:') 7 guess = int (guess); 8 if guess == num: 9 print ('猜中了') 10 break #立即结束循环 11 elif guess > num: 12 print ('猜大了') 13 else: 14 print ('猜小了') 15 count = count +1 16 else: #循环正常结束后,会执行 17 print ('GAME OVER,LOSED!!')
1 # 运行结果如下: 2 请输入你猜的数字:8 3 猜小了 4 请输入你猜的数字:30 5 猜小了 6 请输入你猜的数字:56 7 猜大了 8 GAME OVER,LOSED!!
-
while + continue
1 # while循环猜数字游戏 2 import random #运行顺序1 3 num = random.randint(1,100) #运行顺序2 ,假设num=51 4 count = 0 #运行顺序3 5 while count < 3: #运行顺序4、11 6 guess = input ('请输入你猜的数字:') #运行顺序5,输入guess=91 7 guess = int (guess); #运行顺序6 8 if guess == num: #运行顺序7 9 print ('猜中了') 10 break #立即结束循环 11 elif guess > num: #运行顺序8 12 print ('猜大了') #运行顺序9 13 continue #运行顺序10,不执行count = count +1,直接跳出本次循环,循环一直到猜中了break 14 else: 15 print ('猜小了') 16 continue 17 count = count +1 18 else: #循环正常结束后,会执行 19 print ('GAME OVER,LOSED!!')
4.5.2 for循环
- python的for循环,不需要计数器,与while不同的是,使用continue,count也会累计,不会死循环
1 # for循环:猜数字游戏 2 for i in range(3): 3 guess = input ('请输入你猜的数字:') 4 guess = int (guess); 5 if guess == num: 6 print ('猜中了') 7 break #立即结束循环 8 elif guess > num: 9 print ('猜大了') 10 else: 11 print ('猜小了') 12 else: #循环正常结束后,会执行 13 print ('GAME OVER,LOSED!!')
注册小程序练习
写一个登陆的小程序
username = tanailing
passwd = 123456
1、输入账号密码,输入正确就登陆成功,
提示欢迎xxxx登陆,今天的日期是多少
2、最多输入错误3次
账号/密码错误,请重新登陆
3、如果失败测试超过3次,提示,失败次数过多
4、要校验输入是否为空,如果输入为空,你要提示账号./密码不能为空
什么都不输入和输入一个空格多个空格都算空。
输入为空也算操作错误一次
1 # for循环:登录 2 import datetime 3 4 username = 'tanailing' 5 passwd = '123456' 6 today = datetime.date.today() 7 times = 3 8 for i in range(3): 9 name = input("请输入您的账号:") # 输入账号 10 passw = input("请输入您的密码:") # 输入密码 11 if name.strip() == username: # 输入的用户名正确的情况 12 if passw.strip() == passwd: # 输入的密码正确的情况 13 print('%s欢迎您登录!' 14 '今天是 %s ' % (name, today)) 15 break 16 elif passw.strip() == '': # 输入的密码为空的情况 17 times -= 1 # 可实施次数减1 18 print("账号/密码不能为空!") 19 print('您还有 %s 次机会' % (times)) 20 21 else: # 输入的密码错误或者其他的情况 22 times -= 1 # 可实施次数减1 23 print("账号/密码错误,请重新登陆!") 24 print('您还有 %s 次机会' % (times)) 25 elif name.strip() == '': # 输入的用户名为空的情况 26 times -= 1 # 可实施次数减1 27 print("账号/密码不能为空!") 28 print('您还有 %s 次机会' % (times)) 29 else: # 输入的用户名错误或者其他的情况 30 times -= 1 # 可实施次数减1 31 print("账号/密码错误,请重新登陆!") 32 print('您还有 %s 次机会' % (times)) 33 else: # 实施错误次数>3的情况 34 print("错误次数过多!账号已锁定!请稍后再试!")
1 # while 循环:登录 2 import datetime 3 count = 0 4 username = 'tanailing' 5 passwd = '123456' 6 times = 3 7 today = datetime.date.today() 8 while count < 3: 9 name = input('请输入您的账号:') # 输入账号 10 passw =input('请输入您的密码:') # 输入密码 11 if name.strip() == username and passw.strip() == passwd: # 输入的账号和密码都匹配的情况 12 print('%s欢迎您登录!今天是 %s ' % (name, today)) 13 break # 跳出当前所有循环 14 elif name.strip() == '' or passw.strip() == '': # 输入的账号或者密码任意一个为空的情况 15 print('账号/密码不能为空!') 16 times -= 1 # 可实施次数减1 17 count += 1 # 循环计数器加1 18 print('您还有 %s 次机会' % (times)) 19 continue 20 elif name.strip() != username or passw.strip() != passwd: # 输入的账号或者密码任意一个不匹配的情况 21 print('账号/密码错误,请重新登陆!') 22 times -= 1 # 可实施次数减1 23 count += 1 # 循环计数器加1 24 print('您还有 %s 次机会' % (times) ) 25 continue 26 else: # 实施错误次数>3的情况 27 print("错误次数过多!账号已锁定!请稍后再试!")