猫哥教你写爬虫 018--debug

bug发展史

第一只bug的故事

计算机程序之母的格蕾丝·赫伯(Grace Hopper)。

时光回到1947年,当时她正在为下图这个庞然大物编制程序...

1558618010159

第一部万用计算机的进化版——马克2号(Mark II)

bug就化身计算机领域里程序故障的代名词

1558617884213
1558618208290

俗话说的好,coding五分钟,debug两小时

1558618278908

这个代码会报错吗?

a = input('请输入密码:')
if a == '123456'
    print('经过')
复制代码

1558618521199

有一段代码是错的...

for x in range(10):
     print(x)  
for x in range(10):
    print(x)  
复制代码

看一下这一段...

n = 0
while n<3:
    username = input("请输入用户名:")
    password = input("请输入密码:")
    if username == 'abc' and password == '123':
        print("登陆成功")
        break
    else:
        n=n+1
        print("输入有误")
else:
    print("你输错了三次,登陆失败")
复制代码

1558659352922
1558659582134

一块儿来找茬儿...

从list中找到星期日

week = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
sunday = week[7]
print(sunday)
复制代码

创建一个空list, 往里插入值...

a = []
a = append ('A','B','C')
print(a)
复制代码

当你发现知识点记不清或者不能肯定的时候,就要及时复习或者上网搜索。

不要强行写出本身不敢肯定的代码,这种状况每每容易出错。

1558659718351

思路不清指的是当咱们解决比较复杂的问题时,因为咱们对细节和实现手段思考得不够清楚,

要么致使一步错,步步错;要么虽然没有报错,可是程序没有达到咱们想要的效果。

1558659761181

以前留的一个做业...

1558659806743

这段代码有问题吗?

movie = {
    '妖猫传':['黄轩','染谷将太'],
    '无问西东':['章子怡','王力宏','祖峰'],
    '超时空同居':['雷佳音','佟丽娅']
}
name=input('你查询的演员是?')
for i in movie:
    actors=[i]
    if name in actors:
        print(name+'出演了'+i)
复制代码

1558659975406

猜硬币...

import random
guess = ''
while guess not in ['正面','反面']:
    print('------猜硬币游戏------')
    print('猜一猜硬币是正面仍是反面?')
    guess = input('请输入“正面”或“反面”:')
# 随机抛硬币,0表明正面,1表明反面
toss = random.randint(0,1)
if toss == guess:
    print('猜对了!你真棒')
else:
    print('没猜对,你还有一次机会。')
    guess = input('再输一次“正面”或“反面”:')
    if toss == guess:
        print('你终于猜对了!')
    else:
        print('大失败!')
复制代码

1558660054712

age = int(input('你今年几岁了?'))
if age < 18:
    print('不能够喝酒噢')
复制代码

若是不是数字...

1558660110979
1558660175124

因此解决方案是...

try:
    age = int(input('你今年几岁了?'))
    if age < 18:
        print('不能够喝酒噢')
except ValueError:
    print('你喝多了吧...')
复制代码

这段代码有没有问题?

num = [1,2,0,3]
for x in num:
    print (6/x)
复制代码

因此解决方案是....

num = [1,2,0,3]
for x in num:
    try:
        print (6/x)
    except ZeroDivisionError:
        print('0不能作除数')
复制代码

全部异常汇总...

异常名称 描述
BaseException 全部异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(一般是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
StandardError 全部的内建标准异常的基类
ArithmeticError 全部数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (全部数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操做系统错误的基类
IOError 输入/输出操做失败
OSError 操做系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
LookupError 无效数据查询的基类
IndexError 序列中没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 通常的运行时错误
NotImplementedError 还没有实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 通常的解释器系统错误
TypeError 对类型无效的操做
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造未来语义会有改变的警告
OverflowWarning 旧的关于自动提高为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

1558618278908
1558660589131
1558659761181
1558659975406

期末考试结束了,小加在教务系统查到了本身的几门必修课分数,

他想经过python计算本身的平均分。

因而写了下面的代码,但是老是得不到结果,请帮纠正bug并跑通程序。

scores = {'语文':89, '数学':95, '英语':80}
sum_score = 0
def get_average(scores):
    for subject, score in scores.items():
        sum_score += score
        print('如今的总分是%d'%sum_score)
    ave_score = sum_score/len(scores)
    print('平均分是%d'%ave_score)
get_average(scores)
复制代码

小强认识了一个新朋友叫旺财,他想让你给他取个外号,但他很不喜欢别人叫他小狗和汪汪,

因而写了一个程序让本身避免叫他这两个外号中的一个,但是不知为何叫他小狗程序也没有警告。

not_bad_word = True
while not_bad_word:
    x = input('请给旺财取个外号:')
    if x == '小狗' and x =='汪汪':
        not_bad_word = False
        print('我生气了,不想理你了!')
print('对不起,之后我不会这么叫你了')
复制代码

小明想用python写个程序,看看本身的存款每月涨了多少倍。

但是发现程序报错,你能帮他找出错误,使程序从新运行吗?

deposit = [100,300,900,2000,5000,0,2000]
for i in range(1, len(deposit)):
    times = deposit[i]/deposit[i-1]
    print('你的存款涨了%f倍'%times)
复制代码

练习目标:

经过这个练习,咱们会用代码作出一个贴心的除法计算器:

只要输入有误,就会给出相应的报错信息。

练习要求:

这个除法计算器须要包含的报错信息有:

输入了非数值(即不属于整数和浮点数)、除数为零以及变量不存在。

为了让代码能够给出相应的报错信息,咱们能够运用课堂中谈到的try...except语句。

1558661105223
1558661124212
1558661138571
1558661176415

快速跳转:

猫哥教你写爬虫 000--开篇.md
猫哥教你写爬虫 001--print()函数和变量.md
猫哥教你写爬虫 002--做业-打印皮卡丘.md
猫哥教你写爬虫 003--数据类型转换.md
猫哥教你写爬虫 004--数据类型转换-小练习.md
猫哥教你写爬虫 005--数据类型转换-小做业.md
猫哥教你写爬虫 006--条件判断和条件嵌套.md
猫哥教你写爬虫 007--条件判断和条件嵌套-小做业.md
猫哥教你写爬虫 008--input()函数.md
猫哥教你写爬虫 009--input()函数-人工智能小爱同窗.md
猫哥教你写爬虫 010--列表,字典,循环.md
猫哥教你写爬虫 011--列表,字典,循环-小做业.md
猫哥教你写爬虫 012--布尔值和四种语句.md
猫哥教你写爬虫 013--布尔值和四种语句-小做业.md
猫哥教你写爬虫 014--pk小游戏.md
猫哥教你写爬虫 015--pk小游戏(全新改版).md
猫哥教你写爬虫 016--函数.md
猫哥教你写爬虫 017--函数-小做业.md
猫哥教你写爬虫 018--debug.md
猫哥教你写爬虫 019--debug-做业.md
猫哥教你写爬虫 020--类与对象(上).md
猫哥教你写爬虫 021--类与对象(上)-做业.md
猫哥教你写爬虫 022--类与对象(下).md
猫哥教你写爬虫 023--类与对象(下)-做业.md
猫哥教你写爬虫 024--编码&&解码.md
猫哥教你写爬虫 025--编码&&解码-小做业.md
猫哥教你写爬虫 026--模块.md
猫哥教你写爬虫 027--模块介绍.md
猫哥教你写爬虫 028--模块介绍-小做业-广告牌.md
猫哥教你写爬虫 029--爬虫初探-requests.md
猫哥教你写爬虫 030--爬虫初探-requests-做业.md
猫哥教你写爬虫 031--爬虫基础-html.md
猫哥教你写爬虫 032--爬虫初体验-BeautifulSoup.md
猫哥教你写爬虫 033--爬虫初体验-BeautifulSoup-做业.md
猫哥教你写爬虫 034--爬虫-BeautifulSoup实践.md
猫哥教你写爬虫 035--爬虫-BeautifulSoup实践-做业-电影top250.md
猫哥教你写爬虫 036--爬虫-BeautifulSoup实践-做业-电影top250-做业解析.md
猫哥教你写爬虫 037--爬虫-宝宝要听歌.md
猫哥教你写爬虫 038--带参数请求.md
猫哥教你写爬虫 039--存储数据.md
猫哥教你写爬虫 040--存储数据-做业.md
猫哥教你写爬虫 041--模拟登陆-cookie.md
猫哥教你写爬虫 042--session的用法.md
猫哥教你写爬虫 043--模拟浏览器.md
猫哥教你写爬虫 044--模拟浏览器-做业.md
猫哥教你写爬虫 045--协程.md
猫哥教你写爬虫 046--协程-实践-吃什么不会胖.md
猫哥教你写爬虫 047--scrapy框架.md
猫哥教你写爬虫 048--爬虫和反爬虫.md
猫哥教你写爬虫 049--完结撒花.mdhtml

相关文章
相关标签/搜索