貓哥教你寫爬蟲 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

相關文章
相關標籤/搜索