day07

异常处理

异常处理:处理异常(报错:Error)

try:#尝试
    print(1/1)#有错误就跳过,没错误就执行
except ZeroDivisionError:#错误被跳过了(捕捉了)
    pass#啥也不做
dic = {'a': 1}
key=input('输入一个key获取字典中的值')
try:#尝试
    dic=['a':1]
    dic[key]#KeyError
    1/0
    lt=[1,2,3]
    lt['a']
except ZeroDivisionError:#错误被跳过了,智能捕捉ZeroDivisionError,其他错误无法捕捉
    print('捕捉到了ZeroDivisionError这个错误')
except KeyError:
    print('捕捉到了KeyError这个错误')
    
try:#尝试
    dic=['a':1]
    dic[key]#KeyError
except Exception as e:#Exception万能异常,把错误信息输入出来,同时一般把该错误记录到日志中
    print(e)
    #logging.info(e)->程序员看
    print('你输入有问题')->用户看
#预运行(类似于把代码抽离到另外一个文件中运行,这样的运行对文件不会造成任何影响),能不用则不用
    

力扣

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

2.分析题目

'''
给定一个整数数组(列表) nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例1:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
'''
# 需求1:你在该数组中找出和为目标值的那 两个 整数
# 需求2:并返回他们的数组下标(索引)
# 一脸懵逼:你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
for i in range(len(nums)):
    for j in range(i+1,len(nums)):
        if nums[i]+nums[j]==target:
            print(i,j)
            
            
for i in range(len(nums)):
    sub=target-nums[i]
    if sub in nums:
        res=nums.index(sub)
        id res!=i
        print(i,res)
        break

字符串内置方法

s = 'nick handsome'

索引取值

print(s[0])

切片

print(s[0:4])

成员运算

print('nick' in s)

print('nike1' in s)

for循环

for i in s:#n i c k h a n d s o m e

​ print(i)

len()

print(len(s))

接下来讲的都是字符串.出来的方法

s='***   ni  ck  '
print(s)

strip() 默认去掉两端空格

print(s.strip()) #去空格

print(s.strip('')) #去

print(s.strip('n* ')) #去空格 * n

lstrip()/rstrip() 去左端/右端

s='**nick**'
print(s.lstrip('*'))
print(s.rstrip('*'))

startswith()/endswith() 以 开头/以 结尾

s='nick'
print(s.startswith('nick'))
print(s.endswith(k))

find()/index() 获取某一个元素的索引位置

s='nick'
print(s.find('a'))#找不到返回-1
print(s.index('a'))#找不到报错

join() 把列表内的元素拼接出来

print('*'.join(['a','b','c']))

split() 切割

s='a*b*x*c'
print(s.split('*'))#以*为切割符号,切割字符串

center/ljust/rjust 打印更美观,居中/居左/居右

print(s.center(50,'_'))
print(s.ljust(50,'_'))
print(s.rjust(50,'_'))

isdigit()/isalpha()

s='a'
print(s.isdigit())#是否为纯数字
print(s.isalpha())#是否为纯字母

count() 计数

s='nick nick'
print(s.count('nick'))

ctrl+alt+l-->让他符合pep8标准

from selenium import webdriver  # 用来驱动浏览器的
from selenium.webdriver import ActionChains  # 破解滑动验证码的时候用的 可以拖动图片
from selenium.webdriver.common.by import By  # 按照什么方式查找,
By.ID,By.CSS_SELECTORfrom 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'C:\Users\oldboy\Desktop\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('小泽老师')    
    # 查找百度一下按钮    
    submit_tag = driver.f
    ind_element_by_id('su')   
    submit_tag.click()    
    # 等待10秒    
    time.sleep(10)
    # 无论try发生了什么,最后都会关闭driver驱动
finally:    
    driver.close()

今日内容:
测试:
黑盒测试:
对用户所能看到的界面进行测试。

    白盒测试:
        对软件的性能进行测试。

    手动测试:
        人为去检测bug。

    自动化测试:
        通过代码写好的自动化测试脚本检测bug。


selenium请求库:
    1.什么是selenium?
        - 是一个自动化测试工具。

    2.为什么要使用selenium?
        - 优点:
            - 通过它可以驱动浏览器,跳过登录滑动验证

        - 缺点:
            爬虫效率低

    3.怎么使用selenium?
        - 安装驱动
            - http://npm.taobao.org/mirrors/chromedriver/2.38/

        - 安装selenium请求库
            - pip3 install selenium

        - 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>
上一篇:数据类型


下一篇:简单的数据结构