?

過招守護使

2018-06-30 06:27王麗麗
中國信息技術教育 2018年10期
關鍵詞:寶箱號碼語句

王麗麗

在正確繪制圖騰圖案后,山門打開。阿派心中竊喜。難道進入失落的世界,就這么容易?阿派正想入內,卻發現門后還有一位守護使。這位守護使并非兇神惡煞,看了看他,說道:“守了大半輩子,終于有人陪我玩一回尋寶游戲啦!”只見他擺出十個寶箱,說道:“上有1到10的編號,只有一個寶箱中藏有寶物,猜中者方可踏入神秘世界?!?/p>

:這節課的設計靈感來源于計算機經典案例“猜數字”小游戲。教師通過在Python中編程實現游戲效果,掌握循環和分支結構。在教學設計時,教師要考慮學情,由易到難,分為三種難度的任務:猜一次、不限次數猜、限定次數猜。

初級難度:猜一次

1.問題分析

首先,從阿派(游戲者)的角度,梳理初級難度的游戲過程(如下頁圖1)。

其次,將游戲過程對應IPO模式(如下頁圖1)。

I(Input):程序的輸入,包括用戶手工輸入、程序內部參數輸入等。

P(Process):程序的主要邏輯處理,對輸入的數據進行處理并產生結果。

O(Output):程序的輸出,包括屏幕顯示輸出、文件輸出等。

:對七年級學生而言,如何將自然語言轉換為程序語言是一個難點。教師可以使用流程圖、偽代碼等形式,幫助學生分析問題,梳理邏輯。此外,掌握程序設計的基本方法,理解IPO模式,有助于學生日后分析和解決更復雜的問題。

2.Python實現

本例的程序輸入環節,守護使需要事先將寶物藏匿于某個寶箱中,即事先確定一個寶箱號碼為正確答案,而這個號碼實際上是由計算機自動生成的。為了游戲的可玩性,筆者利用random.randint(1,10)產生1到10的隨機數,模擬游戲開始時寶物隨機放置在某個寶箱中的效果。接著,利用input()函數提示并允許阿派猜數,再利用int()函數將其轉換為整型,便于程序處理環節的條件判斷。

在初級難度游戲設計中,阿派只猜一次,守護使立刻給出反饋,提示號碼猜大了,或猜小了,或正確。利用if條件語句,將阿派猜的號碼(guess)與正確的寶箱號(number)作比較,即可實現這樣的效果,具體的代碼如圖2所示。

:random是Python的常用模塊。該模塊中有幾個常用的函數,如randint(產生隨機數)、choice(從序列中返回一個隨機元素)、shuffle(將序列中的元素隨機排序)等,random模塊的導入方法和turtle一樣。在本例中,為了便于學生理解邏輯,筆者將條件判斷分為三種情況(太大、太小、正確),并利用三條if語句實現判斷。

中級難度:不限次數猜

1.問題分析

只猜一次,很難猜中,那就試一試不限次數,直至猜中。如圖3所示,主要邏輯是這樣的:首先,阿派猜一個號碼,當號碼不正確時,即guess≠number時,守護使提示太大或太小,并允許再猜,直至猜中為止。如果一次猜中,則跳過循環,直接提示正確,其中的“提示太大或太小”,可以利用分支語句來實現(如下頁圖4)。

2.Python實現

圖3中重復猜數的過程,可以利用while語句來實現,只要條件滿足,就不斷循環,直到條件不滿足時退出循環。其中的“提示太大或太小”,可以利用if...else來實現(如下頁圖5),程序運行效果如下頁圖6。

:Python是通過代碼的縮進來決定內在邏輯的,用4個空格表示語句塊的縮進??崭竦亩嗷蛏?,都可能導致程序的運行錯誤。在Pycharm編輯器中,可以按Tab進行縮進,按Tab+Shift去除縮進。

高級難度:限定次數猜

1.問題分析

不限次數的猜數,顯然不符合闖關的難度要求。那么,假定阿派只有3次機會來選寶箱。若3次都猜不對,則游戲結束;若3次內猜中,則直接跳出循環,游戲結束。

2.Python實現

利用for循環和range( )內建函數,可以指定循環次數。range( )函數返回的結果是一個整數序列的對象,其語法為range(start, stop[, step]),默認start為0,step為1。如圖下頁7所示,range(3)表示i依次為0、1、2,一共循環3次。在本例中,判斷條件有三種情況(猜中、猜大了、猜小了)。像這種多個條件的判斷,可以用elif來實現。

:由于Python并不支持switch語句,所以在多個條件判斷時,可以用多個elif來實現。另外,在Python語言中,還有for...else結構,else中的語句會在循環正常執行完成后,再執行,while...else也一樣。這也體現了Python語言的靈活性。

猜數訣竅:二分查找法

有沒有什么方法,可以快速猜中正確的寶箱號碼呢?可以利用二分查找法,每次將查找范圍縮小一半,快速查找到正確的號碼。如上表,先取1~10的中間數,大約為5。根據“小了”的提示,再從新范圍6~10中再取中間數。重復以上步驟,不斷縮小查找范圍,直到找到正確的寶箱號碼。

利用二分查找法,最多4次定能猜中寶箱號碼。因為10個寶箱,范圍在23<10<24之間,最大查找次數為log2n+1。同理可知,如果有100個寶箱,利用二分法,最多7次可以找到正確的寶箱。

:二分查找法是基本算法之一,其中心思想是分治,適用于在一個有序數組中尋找特定的數,在實際項目中應用很多。初中學生可以通過尋寶小游戲初步了解二分法的思想。

拓展練習

在《過招守護使》這一課中,主要學習了循環和分支,接觸了while語句、for語句、if語句。針對學有余力的學生,教師不妨提供一些拓展練習,利用循環和分支來解決一些生活小問題,如BMI身體質量指數的計算、乘法口訣法,或結合之前所學的海龜模塊進行圖形化設計等。

猜你喜歡
寶箱號碼語句
寶箱
關于華為軟交換號碼甄別的一些認識
寶箱3
寶箱1
基本算法語句
我喜歡
月光寶箱
我愛我班之錯誤號碼
作文語句實錄
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合