1.3錯誤類型和第二個程序

上節(jié)中,我們編寫了第一個程序。如果程序中出現(xiàn)在錯誤怎么辦呢?也許會發(fā)生不同類型的錯誤,下面我們就來認識和了解一下錯誤,在以后遇到錯誤之后,你就會知道如何應對。

A.syntax error(語法錯誤)

Idel在運行程序前會對程序做一些檢查。如果Idel發(fā)現(xiàn)一個錯誤,往往是一個syntax error(語法錯誤)。語法是一種編程語言的拼寫和文法規(guī)則,所以一般語法錯誤是指輸入的內(nèi)容不是正確的python代碼。例如:

Print “hello,word!”

Print “Thanks!”

Printbye,bye!”

從上面我們就看出來,在print和bye,bye!”之間漏了一個引號。如果我們運行這段代碼,Idel會給我們什么提示呢?


圖一

彈出的信息框顯示的英文意思是告訴我們,程序中有一個錯誤,語法不正確。你現(xiàn)在要做的就是查看代碼。這時你也會注意到Idel中用紅色的顯示出錯誤的位置,有可能顯示的位置不是我們程序出錯的位置,但這個位置也距離真正出錯的位置不會太遠。這就要我們針對紅色標記附近的代碼仔細的觀察查找錯誤。語法錯誤,對我們來說就是檢查一下程序代碼中輸入的代碼信息,并將其修改過來就可以了。

B.運行時錯誤

這種錯誤是在運行程序前python或者Idel沒有檢測出來錯誤。這種錯誤只能是在運行的時候才會發(fā)生,所以被稱為runtime error(運行時錯誤)。例如:

Print “helloworld!”

Print “Canyou help me?”

Print “zhang” +? 5

如果上面的代碼保存并運行的話,程序會運行前兩行的代碼,也會提示第三行代碼有錯誤。


圖二

Traceback開頭的代碼行表示的錯誤消息開始。下一行指哪里發(fā)生了錯誤(會給出文件位置、文件名稱以及代碼出錯的行號),再下一行就是顯示的是出錯的代碼行。這里就很明了顯著的幫助你找到代碼中哪里出現(xiàn)了問題。錯誤消息的最后也會告訴你python自己檢測反饋存在的什么的問題。對編程和python就會更加的理解深刻了。

這里我想問大家一個問題,大家不知道有沒有注意到。第一個程序中我們看到過print“zhang”* 20就可以運行,為什么今天我們的print“zhang”+ 5運行就出現(xiàn)了錯誤呢?這就好比貓和蘋果放在一起。在python中兩個完全不通的東西不能放在一起相加,比如說文本和漢字。正是因為這樣才會出現(xiàn)print“zhang”+ 5出現(xiàn)錯誤信息。這段代碼就成了文本+數(shù)字,沒有任何意義,也沒有結果。同樣也好比1只貓加上1個蘋果等什么。這根本就沒有實際意義,如果是等于2,那是2個什么呢。所以print“zhang”+ 5沒有意義,程序就運行不了。不過任何東西都是可以成一個數(shù)翻倍。如1只貓,乘以2,就是2只貓。所以說print“zhang”* 20是可以運行的。

由于上節(jié)我們寫的第一個程序沒什么多大的意義,只是單純的整理了幾個全是用來打印的代碼。今天我們來寫一個有意思的第二個程序。

第二個程序我們編寫一個簡單的猜字游戲。與第一個程序一樣,我們先【File】(文件)--【New file】(新建文件),我將代碼輸入進去,保存一下就可以了。

附代碼:

#-*- coding: utf-8 -*-

import random

secret =? random.randint(1,100)

guess= 0

tries= 0

print "你好!我是一款猜數(shù)字游戲,快來猜一猜吧!"

print "它是數(shù)字從1到100.你有6次機會"

while guess? !=? secret and tries < 6:

? ? ? ?guess = input("你的猜測是多少?")

? ? ? ? ? ? if guess < secret:

? ? ? ? ? ? ? ? ?print "小啦!增大一點。"

? ? ? ? ? ? elif guess > secret:

? ? ? ? ? ? ? ? ?print "大啦!減小一點。"

? ? ? ? ? ? ?tries = tries + 1

ifguess == secret:

? ? ? ? ? ? ?print "哇哦!太聰明了,你竟然猜對了!"

else:

? ? ? ? ? ? ?print "真遺憾,你沒有機會了。請下次再來吧!"

? ? ? ? ? ? ?print "這個數(shù)是:",secret

輸入這些代碼時候,注意一下while指令后面是自動縮進的,另外if和elif后面的代碼也是自動縮進。還有就是在這些后面要帶有的是冒號“:”,這才會在后面自動縮進。

【Save】(保存)--【Run】(運行)--【Run Module】(運行模塊)。

圖三

我第一次猜了6次都沒有猜中,最后發(fā)現(xiàn)差一點就猜中了。第二次的時候我猜了3次就猜中了。還有我現(xiàn)在要說的是,現(xiàn)在我們不用太重視while、if、elif、else和input這些關鍵詞,在以后我們會深入的學習這些關鍵詞,現(xiàn)在你需要了解的是這個程序的基本過程。

關于游戲,這個程序是選取的隨機數(shù)。用戶可以直接參與其中,輸入數(shù)字。根據(jù)輸入的數(shù)字對比太大還是太小。用戶可以輸入6次,6次都沒猜中就會結束游戲。猜到的數(shù)字和秘密數(shù)一樣的時候,就是獲勝結束游戲。

好啦,今天的課程就學到這里??彀凑丈厦娴拇a練習練習吧,有不會的或者不懂的,可以在屏幕的下方【留言區(qū)】給我留言。


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 張S金編于2017.11.26? ?23:25


?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容