异常处理:就是处理异常
try: #尝试
print(1/0) #有错误就跳过,没有错误就执行
except ZeroDivisionError: #错误被跳过了(捕捉了)
pass #啥也不做
key = input('输入一个key获取字典中的值')
dic = {'a':1}
dic[key] #KeyError
1/0
It = [1,2,3]
It['a']
except ZeroDivisionError: 错误被跳过了(捕捉了),只能捕捉ZeroDivisionError,其他的错误无法捕捉
print('捕捉到了zeroDivisionError这个错误') #啥也不做
except KeyError: #捕捉
print('捕捉到了KeyError这个错误')
#print(1/0) #有错误就跳过,没有错误就执行
try:
key = input('输入一个key获取字典中的值')
dic = {'a':1}
dic[key] #KeyError
#1/0
it = [1,2,3]
it = ['a']
except Exception as e: #Exception万能异常,#把错误信息输入出来,同时把错误记录到日志中
#logging.info(e) #日志——》程序员看的
print('你输入有问题') #用户界面提示的
#力扣刷题
#预运行(类似把代码抽离到另外一个文件中运行,这样的运行对于本文件不会造成任何影响),能不用则不用
字符串内置方法
字符串的内置方法:只有字符串才能使用,列表不能使用
内置方法:自带的方法(提前安排好的,会用就行了)
s = '高枫 nice success'
#
#1.索引取值
print(s[0])
高
#2.切片
print(s[0:6])
高枫 nic
#3.成员运算
print('高枫' in s)
print('高枫1' in s)
true
false
#4.for循环
for i in s: #高枫
print(i)
高
枫
n
i
c
e
s
u
c
c
s
e
#5.len()
print(len(s))
15
#6.strip():默认去掉两端空格
s=('**ssfdsf** d')
#print(s.strip()) #去空格
#print(s.strip('*'))#去*
print(s.strip('s'))#去 和*和s
#7.lstrip()/s=rstrip():左端/右端
s=('**ssfdsf** d')
s='**ssfdsf'
print(s.lstrip('*'))
print(s.rstrip('*'))
#8.startswith()/endswith():以。。。开头。/以。。。结尾
s='gao feng'
print(s.startswith('gao'))
print(s.endswitj('g'))
9.find()/index():获取某一个元素的索引位置
s='gao'
print(s.find('p'))#找不到返回-1
#print(s.index('o'))#找不到报错
10.jion():把列表内的元素拼接出来
print('*'.join(['a','b','c']))
11.split():切割
s='a*b*c'
print(s.split('*'))#以*为切割符,切割字符串
['a','b','c']
#12.center/ljust/rjust #打印更美观,居中/居左/居右
s='nice'
print(s.center(50,'-')) #-----nice----
print(s.ljust(50,'-') #nice------
print(s.rjust(50,'-')) #------nice
# 13.isdigit()/isalpha()
s = 'a'
print(s.isdigit())#是否为纯数字
print(s.isalpha())#是否为纯字母
false
true
#14.count():计数
s = 'dffdsf'
print(s.count('f'))
3
#ctrl+alt+l-->让他符合pep8标准(pytho创始人规定了代码的风格)
两数之和
-
更换解释器 , 更换背景色
-
分析题目 (需求)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ hashmap = {} for index, num in enumerate(nums): another_num = target - num if another_num in hashmap: return [hashmap[another_num], index] hashmap[num] = index return None
-
20-40分钟,如果真想不出来 --》 不要死磕 --》 去评论区看他人装逼(解决思路) ---你目前想不出来是因为你第一次接触,10-15题之后不能再看答案。可以死磕
-
用纸笔画
测试
-
黑盒测试
对用户所能看到的界面进行测试
-
白盒测试
对软件的性能进行测试
-
手动测试
人为去检测bug
-
自动化测试
通过代码写好的自动化测试脚本检测bug
selenium请求库
-
什么是selenium?
是一个自动化测试工具
-
为什么要用selenium
优点:
通过它可以驱动浏览器,跳过登录滑动验证
缺点:
爬虫效率低
-
怎么使用selenium
安装selenium请求库
pip3 install selenium
下载chromdriver.exe放到python安装路径的scripts目录中即可
下载chromdriver.exe放到python安装路径的scripts目录中即可
#验证安装
下载链接:http://npm.taobao.org/mirrors/chromedriver/2.38/
cmd-->python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> driver=webdriver.Chrome() #弹出浏览器
>>> driver.get('https://www.baidu.com')
>>> driver.page_source
html标签查找
通过属性查找
优先使用:
id: 值是唯一
class: 值可以有多个
name: 值的input里面拥有的唯一属性
element:查找第一个
elements:查找所有
css_selector属性选择器查找
id: #p-price class: .p-price
<div id="p-price">
<div class="p-price">
<strong class="J_45269140635" data-done="1">
<em>¥</em>
<i>238.00</i>
</strong>
</div>
# selenium基本使用
from selenium import webdriver # 用来驱动浏览器的
from selenium.webdriver import ActionChains # 破解滑动验证码的时候用的 可以拖动图片
from selenium.webdriver.common.by import By # 按照什么方式查找,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys # 键盘按键操作
from selenium.webdriver.support import expected_conditions as EC # 和下面WebDriverWait一起用的
from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素
import time
1.通过selenium的webdriver加载驱动
webdriver.Chrome('驱动绝对路径')
driver = webdriver.Chrome(r'E:\Python\Scripts\chromedriver.exe')
获取异常
try:
# 等待浏览器数据加载10秒
driver.implicitly_wait(10)
driver.get(
'https://www.baidu.com/'
)
input_tag = driver.find_element_by_id('kw')
input_tag.send_keys('生命3')
# 查找百度一下按钮
submit_tag = driver.find_element_by_id('su')
submit_tag.click()
# 等待10秒
time.sleep(10)
无论try发生了什么,最后都会关闭driver驱动
finally:
driver.close()