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--完結撒花.mdhtml