bug发展史
第一只bug的故事
计算机程序之母的格蕾丝·赫伯(Grace Hopper)。
时光回到1947年,当时她正在为下图这个庞然大物编制程序...
第一部万用计算机的进化版——马克2号(Mark II)
bug
就化身计算机领域里程序故障的代名词
俗话说的好,coding五分钟,debug两小时
这个代码会报错吗?
a = input('请输入密码:')
if a == '123456'
print('通过')
复制代码
有一段代码是错的...
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("你输错了三次,登录失败")
复制代码
一起来找茬儿...
从list中找到星期日
week = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
sunday = week[7]
print(sunday)
复制代码
建立一个空list, 往里插入值...
a = []
a = append ('A','B','C')
print(a)
复制代码
当你发现知识点记不清或者不能确定的时候,就要及时复习或者上网搜索。
不要强行写出自己不敢确定的代码,这种情况往往容易出错。
思路不清指的是当我们解决比较复杂的问题时,由于我们对细节和实现手段思考得不够清楚,
要么导致一步错,步步错;要么虽然没有报错,但是程序没有达到我们想要的效果。
之前留的一个作业...
这段代码有问题吗?
movie = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅']
}
name=input('你查询的演员是?')
for i in movie:
actors=[i]
if name in actors:
print(name+'出演了'+i)
复制代码
猜硬币...
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('大失败!')
复制代码
age = int(input('你今年几岁了?'))
if age < 18:
print('不可以喝酒噢')
复制代码
如果不是数字...
所以解决方案是...
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 | 用户代码生成的警告 |
期末考试结束了,小加在教务系统查到了自己的几门必修课分数,
他想通过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
语句。
快速跳转:
猫哥教你写爬虫 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--完结撒花.md
转载于:https://juejin.im/post/5cfc4ad86fb9a07ebd48c902