• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    樹莓派“圖解”高中Python會考題二例

    2022-07-28 07:11:01牟曉東
    電腦報(bào) 2022年28期
    關(guān)鍵詞:二進(jìn)制樹莓圖解

    牟曉東

    高中信息技術(shù)會考對Python語言的基本語法應(yīng)用及程序代碼的補(bǔ)充解析提出了一定要求,除了通過選擇題對變量名命名規(guī)則、表達(dá)式運(yùn)算結(jié)果的求解等基本知識點(diǎn)進(jìn)行考查外,還有通過閱讀程序段來寫出運(yùn)行結(jié)果的方式,或是根據(jù)題意進(jìn)行程序代碼的補(bǔ)充填寫的方式。在Python的學(xué)習(xí)備考過程中,如果能夠結(jié)合樹莓派開源硬件編程,將程序的運(yùn)行結(jié)果進(jìn)行“圖解”——以一種更為直觀的方式來“看”程序,無疑會極大提高學(xué)生學(xué)習(xí)編程的興趣。在此以“‘只有一人說謊’的抓小偷”邏輯判斷和簡易“十進(jìn)制轉(zhuǎn)二進(jìn)制”兩道Python會考題為例:

    有四個(gè)嫌疑人甲乙丙丁涉嫌偷盜,可以肯定的是其中一人就是小偷。在警察審訊過程中,甲說:“不是我!”乙說:“是丙干的!”丙說:“是丁干的!”丁說:“丙在冤枉我!”如果他們四人當(dāng)中只有一人說了假話,請編程判斷誰是小偷。

    在進(jìn)行Python代碼運(yùn)行的單純文字結(jié)果輸出基礎(chǔ)上,將樹莓派安裝上四支不同顏色的LED燈分別代表甲乙丙丁四個(gè)嫌疑人進(jìn)行“圖解”,最終實(shí)現(xiàn)程序精準(zhǔn)控制某LED燈亮起,對應(yīng)此嫌疑人為真正的小偷。

    首先,將古德微擴(kuò)展板正確安裝于樹莓派上;接著,將紅色、綠色、黃色和藍(lán)色四支LED燈均按照“長腿正、短腿負(fù)”的原則,分別插接至擴(kuò)展板的5號、6號、12號和16號插孔(對應(yīng)甲乙丙丁四個(gè)嫌疑人);最后,插接上電源線為樹莓派供電啟動系統(tǒng)(如圖1)。

    通過Windows的“遠(yuǎn)程桌面連接”輸入樹莓派的IP地址,進(jìn)入后點(diǎn)擊“編程”—“ThonnyPythonIDE”菜單開始代碼編程。

    首先,通過“from gpiozero import LEDBoard”語句,實(shí)現(xiàn)從GPIOZero庫中導(dǎo)入LEDBoard類;接著,使用“LEDs = LEDBoard(5,6,12,16)”語句來組建四支LED燈的“燈陣”,其中的參數(shù)“5,6,12,16”即對應(yīng)各LED燈所插入樹莓派的引腳號;然后,建立嫌疑人變量列表:“persons = [‘甲’,‘乙’,‘丙’,‘丁’]”,注意其中數(shù)據(jù)的次序是與紅色、綠色、黃色和藍(lán)色LED燈一一嚴(yán)格對應(yīng)的;再建立一個(gè)for循環(huán)結(jié)構(gòu)對persons列表所存儲的四個(gè)數(shù)據(jù)進(jìn)行“遍歷”,變量flag的值為一個(gè)邏輯值的運(yùn)算表達(dá)式:“flag = (thief!=‘甲’) + (thief==‘丙’) + (thief==‘丁’) + (thief!=‘丁’)”——Python運(yùn)算時(shí)會將邏輯真(True)的值設(shè)為1、將邏輯假(False)的值設(shè)為0,該行代碼是根據(jù)題意分別將甲乙丙丁四個(gè)嫌疑人的“口供”進(jìn)行了Python化“轉(zhuǎn)譯”;如果四個(gè)邏輯值相加的結(jié)果是3的話(三個(gè)人說的是真話),則先打印輸出真正的小偷:“print(‘嫌疑犯是:’,thief)”,再將該嫌疑人所對應(yīng)的LED燈“點(diǎn)亮”:“LEDs.on(persons.index(thief))”,其中的“index(thief)”是作為變量persons列表數(shù)據(jù)引用索引序號(如圖2)。

    將程序代碼保存為Catch_Thief.py文件,點(diǎn)擊“Run”按鈕運(yùn)行程序進(jìn)行檢測,下方的程序輸出結(jié)果顯示為:“嫌疑犯是:丙”,同時(shí)樹莓派上的第三支黃色LED燈也會亮起(如圖3)。此時(shí),程序中的變量flag的值為3(if條件成立),變量thief的值是“丙”,而“persons.index(thief)”的值為索引號2,它作為LEDs.on的參數(shù)時(shí)就會對應(yīng)亮起樹莓派12號引腳上的第三支黃色LED燈。

    對于會考中經(jīng)常涉及的較小數(shù)字進(jìn)制轉(zhuǎn)換問題,比如16以內(nèi)的十進(jìn)制數(shù)(相當(dāng)于一個(gè)十六進(jìn)制位)轉(zhuǎn)二進(jìn)制數(shù),完全不必使用“除以2倒序余”法,可以直接嘗試“8421”分解組合求和法,使用不同位的“權(quán)數(shù)”進(jìn)行兩種進(jìn)制間的快速任意相互轉(zhuǎn)換。比如:給出一個(gè)十進(jìn)制數(shù)6,通過“8421”直接分解為“4+2”,對應(yīng)寫出二進(jìn)制結(jié)果是“110”;如果是十進(jìn)制數(shù)9,則分解為“8+1”,對應(yīng)的二進(jìn)制數(shù)就是“1001”。如果待轉(zhuǎn)換的十進(jìn)制數(shù)大于15,則在“8421”的基礎(chǔ)上依次向左擴(kuò)充一位“16”,再不夠就再擴(kuò)充第二位“32”……

    保持上一道題的樹莓派及四支LED燈等實(shí)驗(yàn)器材和連接方式不變,設(shè)定“8421”的對應(yīng)數(shù)位分別是從高位到低位的紅色、綠色、黃色和藍(lán)色LED燈,相當(dāng)于四個(gè)二進(jìn)制位,最大可“圖解”表示的十進(jìn)制數(shù)為15(對應(yīng)十六進(jìn)制的F)。對于程序?qū)⒂脩魪逆I盤上接收到的十進(jìn)制數(shù),轉(zhuǎn)換為四位的二進(jìn)制數(shù)后,將對應(yīng)數(shù)位是1的LED燈“點(diǎn)亮”,而數(shù)位為0的則保持熄滅狀態(tài)。

    在PythonIDE中仍然先使用“from gpiozero import LEDBoard”語句,從GPIOZero庫中導(dǎo)入LEDBoard類,同樣是再組建LED“燈陣”:“LEDs = LEDBoard(5,6,12,16)”;接著,通過input()和int()函數(shù)為變量My_Decimal賦值,實(shí)現(xiàn)接收用戶從鍵盤上輸入的任意一個(gè)16以內(nèi)的十進(jìn)制整數(shù):“My_Decimal = int(input(“請輸入一個(gè)16以內(nèi)的十進(jìn)制整數(shù):”))”;語句“My_Binary = format(My_Decimal,‘b’)”的作用是為變量My_Binary賦值,該值是通過format將變量My_Decimal的值轉(zhuǎn)換為對應(yīng)的二進(jìn)制“數(shù)”——特別要注意這是一個(gè)字符串類型的數(shù)據(jù);考慮到用戶輸入的十進(jìn)制數(shù)如果是“大于等于0且小于等于7”時(shí),轉(zhuǎn)換出的二進(jìn)制字符串?dāng)?shù)據(jù)是不足四位的(1位、2位或3位),此時(shí)無法與樹莓派的四支LED燈陣一一對應(yīng),因此必須要對二進(jìn)制字符串?dāng)?shù)據(jù)進(jìn)行高位“補(bǔ)零”操作——建立變量My_Binary_4,為其賦值為“My_Binary.rjust(4,‘0’)”,即通過rjust右對齊來實(shí)現(xiàn)四位數(shù)據(jù)的構(gòu)建。

    接下來,建立一個(gè)for循環(huán),通過range(4)實(shí)現(xiàn)從第1至第3的四次循環(huán),依次判斷變量My_Binary_4中所存儲的四位字符串型二進(jìn)制數(shù)是否有1:“if My_Binary_4[i]==‘1’:”;條件成立的話,則控制對應(yīng)編號的LED燈發(fā)光:“LEDs.on(i)”;最后,將用戶輸入的十進(jìn)制整數(shù)和轉(zhuǎn)換后的二進(jìn)制數(shù)通過print進(jìn)行輸出:“print(‘十進(jìn)制整數(shù)’,My_Decimal,‘轉(zhuǎn)換為二進(jìn)制數(shù)是:’,My_Binary)”(如圖4)。

    將程序保存為Decimal2Binary.py文件,點(diǎn)擊“Run”按鈕運(yùn)行進(jìn)行兩次測試:第一次在“請輸入一個(gè)16以內(nèi)的十進(jìn)制整數(shù):”提示后輸入6,回車后發(fā)現(xiàn)樹莓派上的中間綠色和黃色LED亮起,同時(shí)程序下方也有“十進(jìn)制整數(shù)6轉(zhuǎn)換為二進(jìn)制數(shù)是:110”的提示輸出;第二次測試數(shù)字9,回車后會亮起兩側(cè)的紅色和藍(lán)色LED燈,同時(shí)提示信息會顯示為“十進(jìn)制整數(shù)9轉(zhuǎn)換為二進(jìn)制數(shù)是:1001”(如圖5),實(shí)現(xiàn)了簡易“十進(jìn)制轉(zhuǎn)二進(jìn)制”的圖解過程。

    程序本身只是簡單地實(shí)現(xiàn)了將一個(gè)0至15的十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)輸出及對應(yīng)的LED燈發(fā)光或是熄滅的圖解功能,既沒有對用戶從鍵盤上輸入的數(shù)據(jù)進(jìn)行一定的“容錯(cuò)”判斷處理(比如輸入了小數(shù)或是超過15的整數(shù)),也沒有加入循環(huán)控制用戶的多次測試(程序運(yùn)行一次只能測試一個(gè)數(shù)據(jù)),均可以考慮進(jìn)行程序的進(jìn)一步完善。同時(shí),也可以嘗試另一種相似的圖解方式,比如使用for循環(huán)(range(16)),依次將0~15這十六個(gè)十進(jìn)制整數(shù)均轉(zhuǎn)換為對應(yīng)的二進(jìn)制數(shù),每隔一段時(shí)間(比如3秒鐘)就輸出一組數(shù)據(jù),同時(shí)也會控制樹莓派上的LED“燈陣”進(jìn)行對應(yīng)的亮燈、關(guān)燈顯示,實(shí)現(xiàn)四個(gè)二進(jìn)制數(shù)位從“全滅”(0000)到“全亮”(1111)進(jìn)制數(shù)據(jù)轉(zhuǎn)換的動態(tài)演示,大家不妨一試。

    猜你喜歡
    二進(jìn)制樹莓圖解
    用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
    有趣的進(jìn)度
    二進(jìn)制在競賽題中的應(yīng)用
    基于樹莓派的騎行智能頭盔設(shè)計(jì)
    電子制作(2019年11期)2019-07-04 00:34:32
    基于樹莓派的遠(yuǎn)程家居控制系統(tǒng)的設(shè)計(jì)
    電子制作(2017年17期)2017-12-18 06:40:43
    圖解十八屆六中全會
    群眾(2016年11期)2016-11-28 10:45:58
    響應(yīng)面法優(yōu)化紅樹莓酒發(fā)酵工藝
    中國釀造(2016年12期)2016-03-01 03:08:19
    圖解天下
    新財(cái)富(2015年8期)2015-11-20 10:34:52
    歐盟:速凍樹莓比鮮食樹莓市場更好
    一個(gè)生成組合的新算法
    恭城| 嫩江县| 榆树市| 洪洞县| 内丘县| 嵩明县| 台安县| 岢岚县| 霍州市| 丽水市| 遂川县| 滦南县| 蓬安县| 漳平市| 丰城市| 平南县| 修水县| 滨州市| 探索| 综艺| 永丰县| 英山县| 平塘县| 弥渡县| 东安县| 牡丹江市| 长沙市| 博湖县| 深圳市| 石阡县| 当阳市| 平安县| 淮南市| 恭城| 襄樊市| 盐山县| 安顺市| 兰溪市| 和静县| 应用必备| 绥江县|