异常处理:就是处理异常

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创始人规定了代码的风格)

两数之和

  1. 更换解释器 , 更换背景色

  2. 分析题目 (需求)

    给定一个整数数组 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
    
  3. 20-40分钟,如果真想不出来 --》 不要死磕 --》 去评论区看他人装逼(解决思路) ---你目前想不出来是因为你第一次接触,10-15题之后不能再看答案。可以死磕

  4. 用纸笔画

测试

  • 黑盒测试

    对用户所能看到的界面进行测试

  • 白盒测试

    对软件的性能进行测试

  • 手动测试

    人为去检测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()