相信你對(duì)于在網(wǎng)站上登錄時(shí)需要輸入驗(yàn)證碼已經(jīng)習(xí)以為常。驗(yàn)證碼是一種區(qū)分用戶是計(jì)算機(jī)還是人的驗(yàn)證程序,可以防止惡意破解密碼。傳統(tǒng)驗(yàn)證碼是由隨機(jī)的扭曲數(shù)字和字母所構(gòu)成,如果輸入的字符和驗(yàn)證碼相同則通過驗(yàn)證,否則的話無法通過驗(yàn)證。
今天我們用Scratch來模擬這個(gè)過程,程序自動(dòng)生成由數(shù)字、大小寫字母組合成的驗(yàn)證碼。這個(gè)程序設(shè)計(jì)思路上沒有直接生成隨機(jī)字符而是通過產(chǎn)生隨機(jī)數(shù)的辦法來從列表中隨機(jī)取字符。我們需要預(yù)備一個(gè)大小寫共存(a-z,A-Z)的字母列表,用隨機(jī)數(shù)提取里面的字母。數(shù)字的內(nèi)容從0-9之間進(jìn)行選取。
我們?cè)O(shè)定在驗(yàn)證碼中字母和數(shù)字產(chǎn)生的比例不相同,字母占25%,數(shù)字占75%(比例可以任意調(diào)整)。
首先設(shè)定需要的變量及列表?!白帜噶斜怼庇糜诖娣糯笮懽帜福?2個(gè)字母。用“password”列表依次存放單次循環(huán)結(jié)束后產(chǎn)生的字符。“word”用于存放password列表中所有內(nèi)容拼接后的結(jié)果。
當(dāng)程序運(yùn)行后,首先清空password列表中內(nèi)容,將變量i設(shè)為1,變量word設(shè)置為空。驗(yàn)證碼的位數(shù)可以自行確定,用重復(fù)循環(huán)執(zhí)行6次將驗(yàn)證碼設(shè)置為6位。在循環(huán)的過程中首先我們進(jìn)行概率判斷,在1-4之間隨機(jī)生成一個(gè)數(shù)字,如果生成結(jié)果為1,那么任意從0-9中選擇一個(gè)數(shù)字添加到password列表中,否則從字母列表中任選一個(gè)數(shù)添加到password列表中,這樣就實(shí)現(xiàn)了25%的概率出現(xiàn)數(shù)字,75%的概率出現(xiàn)字母。當(dāng)所有的循環(huán)結(jié)束之后,可以看到password列表存儲(chǔ)了六個(gè)字符,接下來需要將password列表中的數(shù)字進(jìn)行組合。首先重復(fù)執(zhí)行password列表的項(xiàng)目數(shù),在循環(huán)過程中,依次提取出列表中的每一項(xiàng)的值然后連接到變量word中。這樣一個(gè)隨機(jī)驗(yàn)證碼就生成好了,顯示變量word就可以了(圖2)。
程序隨機(jī)產(chǎn)生驗(yàn)證碼之后,彈出一個(gè)輸入框,用戶可以把驗(yàn)證碼輸入后用回答等于word的判斷進(jìn)行校對(duì),就可以模擬驗(yàn)證碼的校驗(yàn)功能了。
本實(shí)例通過預(yù)設(shè)的字母列表把生成的1-52個(gè)隨機(jī)數(shù)轉(zhuǎn)換為隨機(jī)大小寫字母。相信你可以想到更多類似的用法。
電腦報(bào)出品的《Scratch3.9青少年編程高分寶典》,由電腦報(bào)聯(lián)合數(shù)橙科學(xué)一線名師傾力編寫,是系統(tǒng)學(xué)習(xí)Scratch編程的優(yōu)秀教材。采用最新版Scratch 編寫代碼,全書由淺入深分為編程基礎(chǔ)指令;作品分析、創(chuàng)作;算法挑戰(zhàn);綜合實(shí)戰(zhàn)四部分。專為青少年系統(tǒng)學(xué)習(xí)圖形化編程打造,知識(shí)體系完備,并配有等級(jí)考試和藍(lán)橋杯比賽真題庫,是中小學(xué)計(jì)算機(jī)教學(xué)和編程入門必備的工具書。目前已經(jīng)上市,在當(dāng)當(dāng)網(wǎng)、京東和淘寶各大平臺(tái)均有銷售。