




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《Python程序設(shè)計(jì)實(shí)踐教程》課程教案課題:字符串應(yīng)用教學(xué)目的:解決非數(shù)值的問(wèn)題時(shí)主要的操作對(duì)象是字符串。本實(shí)驗(yàn)選取幾個(gè)字符串應(yīng)用和統(tǒng)計(jì)的編程實(shí)例。通過(guò)學(xué)習(xí),使讀者掌握字符串的使用方法,尤其是設(shè)計(jì)字符串程序,進(jìn)而增強(qiáng)程序設(shè)計(jì)能力。課型:新授課課時(shí):本章安排2個(gè)課時(shí)。教學(xué)重點(diǎn):重點(diǎn):掌握字符串的使用方法,尤其是設(shè)計(jì)字符串程序,進(jìn)而增強(qiáng)程序設(shè)計(jì)能力。教學(xué)難點(diǎn):難點(diǎn):教學(xué)難點(diǎn)在于幫助學(xué)生清晰理解變位詞判斷、詞頻統(tǒng)計(jì)以及加密解密過(guò)程中的復(fù)雜邏輯,精準(zhǔn)把握字符串操作細(xì)節(jié),在處理海量數(shù)據(jù)時(shí)優(yōu)化算法以提升效率并保障準(zhǔn)確性。教學(xué)過(guò)程:教學(xué)形式:講授課,教學(xué)組織采用課堂整體講授和分組演示。教學(xué)媒體:采用啟發(fā)式教學(xué)、案例教學(xué)等教學(xué)方法。教學(xué)手段采用多媒體課件、視頻等媒體技術(shù)。板書(shū)設(shè)計(jì):本課標(biāo)題字符串應(yīng)用課次0.5授課方式理論課□討論課□習(xí)題課□其他□課時(shí)安排2學(xué)分共2分授課對(duì)象普通高等院校學(xué)生任課教師教材及參考資料1.《Python程序設(shè)計(jì)實(shí)踐教程》。2.本教材配套視頻教程及學(xué)習(xí)檢查等資源。3.與本課程相關(guān)的其他資源。教學(xué)基本內(nèi)容教學(xué)方法及教學(xué)手段課程引入在日常生活與網(wǎng)絡(luò)世界里,字符串應(yīng)用無(wú)處不在。你們有沒(méi)有玩過(guò)一種文字游戲,將一個(gè)單詞的字母重新排列,組成新的單詞,這其實(shí)就是“變位詞”的趣味體現(xiàn)。就像“l(fā)isten”重新排列能變成“silent”,是不是很有意思?再看新聞報(bào)道,想快速知曉一篇文章里哪些詞匯出現(xiàn)頻率最高,從而把握核心內(nèi)容,這就得靠詞頻統(tǒng)計(jì)來(lái)幫忙。而在信息安全領(lǐng)域,當(dāng)我們發(fā)送機(jī)密郵件,為防止內(nèi)容泄露,會(huì)對(duì)文字進(jìn)行加密,接收方再解密讀取,這背后依靠的正是字符串加密解密技術(shù)。接下來(lái),讓我們一同深入字符串應(yīng)用的奇妙世界,探索變位詞、詞頻統(tǒng)計(jì)與加密解密的奧秘,感受它們?cè)趯?shí)際場(chǎng)景中的強(qiáng)大力量。參考以下形式:1.銜接導(dǎo)入2.懸念導(dǎo)入3.情景導(dǎo)入4.激疑導(dǎo)入5.演示導(dǎo)入6.實(shí)例導(dǎo)入7.其他形式實(shí)驗(yàn)22字符串應(yīng)用實(shí)例22-1變位詞1.題目描述如果一個(gè)字符串是另一個(gè)字符串的重新排列組合,那么這兩個(gè)字符串互為變位詞,例如said與?dais互為變位詞。在第一行中輸入第一個(gè)字符串,在第二行中輸入第二個(gè)字符串。輸出“True”表示是變位詞,輸出“False”表示不是變位詞。2.題目分析根據(jù)變位詞的定義,解決本題的關(guān)鍵是計(jì)算第一個(gè)字符串中各個(gè)字母出現(xiàn)的次數(shù),然后計(jì)算第二個(gè)字符串中對(duì)應(yīng)字母出現(xiàn)的次數(shù),看相同字母的數(shù)量是否一致,若一致則符合條件的次數(shù)加1,若符合條件的次數(shù)等于字符串長(zhǎng)度,則這兩個(gè)字符串互為變位詞。3.程序代碼#sl22-1.pya=input()b=input()count=0 #符合條件的次數(shù)的初始值為?0foriinrange(len(a)): #從字符串的第一個(gè)字母開(kāi)始循環(huán),到字符串末尾結(jié)束ifa.count(a[i])==b.count(a[i]): #判斷相同字母的數(shù)量是否一致count+=1 #若一致,則符合條件的次數(shù)加1ifcount==len(a): #判斷符合條件的次數(shù)是否與字符串長(zhǎng)度相等print("True")else:print("False")4.運(yùn)行結(jié)果輸入樣例如下。saiddais輸出樣例如下。True5.思考與討論除了一個(gè)字母一個(gè)字母地比較,也可采用列表的方法,將字符串轉(zhuǎn)變?yōu)榱斜?,然后按?26?個(gè)字母的順序進(jìn)行排序,再進(jìn)行比較,代碼如下。defchange(s1,s2):alist1=list(s1) #將兩個(gè)字符串轉(zhuǎn)換成兩個(gè)列表alist2=list(s2)count=0alist1.sort() #對(duì)兩個(gè)列表中的字母進(jìn)行排序alist2.sort()match=Truewhilecount<len(s1)andmatch: #對(duì)排序后的列表進(jìn)行逐個(gè)字符比較ifalist1[count]==alist2[count]:count+=1else:match=Falsereturnmatchprint(change(input(),input()))6.問(wèn)題拓展請(qǐng)看這則算術(shù):ELEVEN+TWO=TWELVE+ONE(11+2=12+1),有沒(méi)有發(fā)現(xiàn)特殊的地方?仔細(xì)看看,你會(huì)發(fā)現(xiàn)?ELEVEN+TWO?和?TWELVE+ONE?都是由三個(gè)?E?以及一個(gè)?L、V、N、T、W、O?組成的,很神奇吧!這種把某個(gè)詞或句子的字母位置(順序)加以改變所形成的新詞叫作“Anagram”,詞典把這個(gè)詞翻譯成“變位詞”或“易位詞”。變位詞可以擴(kuò)展到變位短語(yǔ)(PhraseAnagram)、變位句子,如?garbageman?與?bagmanager?互為變位短語(yǔ),而?theeyes?與?theysee、ashoplifter?與?hastopilfer、redtagsale?與?greatdeals?也互為變位短語(yǔ),其中包含大小寫(xiě)、空格、標(biāo)點(diǎn)符號(hào)等符號(hào)。請(qǐng)問(wèn)如何修改程序才能判斷是否兩個(gè)短語(yǔ)互為變位短語(yǔ)?實(shí)例22-2詞頻統(tǒng)計(jì)1.題目描述輸入一個(gè)英文句子,輸出句中的每個(gè)單詞的個(gè)數(shù),單詞之間用空格分隔。2.題目分析統(tǒng)計(jì)每個(gè)單詞出現(xiàn)的次數(shù)就是詞頻統(tǒng)計(jì),字典是比較合適的數(shù)據(jù)類型,單詞可以作為字典的鍵,單詞出現(xiàn)的次數(shù)可以作為字典的值。3.算法設(shè)計(jì)①字典?words?中的鍵是單詞,值是單詞出現(xiàn)的次數(shù),如果鍵不存在,則添加到字典中;如果鍵存在,則僅更新值,所以字典中的鍵不會(huì)重復(fù)。②次數(shù)統(tǒng)計(jì)可以用下面的語(yǔ)句。count=sentenses.count(i)words[i]=count可等效為以下語(yǔ)句。ifiinwords:words[i]+=1else:words[i]=1或等效為以下語(yǔ)句。ifiinwords:words[i]=words.get(i,0)+14.程序代碼#sl21-2.pysentense=input("請(qǐng)輸入一句英文:")sentenses=sentense.split() #按照空格分離字符串,生成列表words={} #定義一個(gè)字典foriinsentenses: #遍歷列表ifi==','ori=='.'ori=='?'ori=='!':continue #當(dāng)循環(huán)到符號(hào)時(shí),跳出此次循環(huán)count=sentenses.count(i) #統(tǒng)計(jì)次數(shù)words[i]=countforainwords:print(f'{a}:{words[a]}') #遍歷輸出字典5.運(yùn)行結(jié)果輸入樣例如下。請(qǐng)輸入一句英文:Chinesepeoplemaynotbethatfamiliarwithsportstourismbutitisoneofthefastestgrowingsectorsoftourism,becauseanincreasingnumberofpeopleareshowinginterestinsportsactivitiesduringtoursevenifsportsisnotthemainobjectiveoftheirtravel.輸出樣例如下。Chinese:1people:2may:1not:2be:1……(略)6.思考與討論①輸出單詞時(shí),按字母順序?qū)卧~進(jìn)行排序,代碼如下。freq={} print("請(qǐng)輸入一句英文:")line=input()forwordinline.split():freq[word]=freq.get(word,0)+1words=sorted(freq.keys()) #按照鍵進(jìn)行排序forwinwords:print("%s:%d"%(w,freq[w]))②題目修改為:統(tǒng)計(jì)一段英文文本中所有不同單詞的個(gè)數(shù),以及詞頻最大的前?10?個(gè)單詞。單詞是由不超過(guò)?80?個(gè)字符組成的連續(xù)字符串,但長(zhǎng)度超過(guò)?15?的單詞只保留前?15?個(gè)字符。合法的字符是字母、數(shù)字、下畫(huà)線,其他字符均認(rèn)為是單詞分隔符。要求文本中至少有?10?個(gè)不同的單詞,不區(qū)分英文大小寫(xiě),例如認(rèn)為“PAT”和“pat”是同一個(gè)單詞。對(duì)詞典進(jìn)行降序排序,隨后按照詞頻遞減的順序輸出前?10?個(gè)單詞。程序代碼如下。txt=input() #輸入一段英文文本,單詞之間用空格分隔txt=txt.lower() #全部轉(zhuǎn)化為小寫(xiě)字母forchin'!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':txt=txt.replace(ch,"") #將文本中的特殊字符替換為空格words=txt.split() #得到一個(gè)單詞列表counts={} #詞頻字典forwordinwords:counts[word]=counts.get(word,0)+1items=list(counts.items()) #將字典的鍵值對(duì)轉(zhuǎn)換為列表items.sort(key=lambdax:x[1],reverse=True) #排序foriinrange(10): #輸出前?10?個(gè)高頻詞word,count=items[i]print(f"{word:<10}{count:>5}")7.問(wèn)題拓展對(duì)于英文句子來(lái)說(shuō),單詞之間有空格,所以可以直接使用?split()函數(shù)將一個(gè)英文句子進(jìn)行分詞。對(duì)于中文句子來(lái)說(shuō),詞語(yǔ)之間沒(méi)有空格,需要先將句子切分成多個(gè)詞。中文的分詞可以借助第三方庫(kù)來(lái)完成,如?jieba?庫(kù)。實(shí)例22-3加密和解密1.題目描述在密碼學(xué)中,愷撒密碼(CaesarCipher)是一種最簡(jiǎn)單且最廣為人知的加密技術(shù)。它是一種替換加密的技術(shù),明文中的所有字母都在字母表中向后(或向前)偏移一個(gè)固定數(shù)目后被替換成密文。例如,當(dāng)偏移量是?3?時(shí),所有字母?A?被替換成?D,B?被替換成?E,以此類推。這個(gè)加密方法是以羅馬共和時(shí)期愷撒的名字命名的,當(dāng)年愷撒曾用此方法與其將軍們進(jìn)行聯(lián)系。編寫(xiě)程序,輸出一串字符,將其中的英文字母加密、解密,非英文字母不變。2.題目分析“愷撒密碼”是一種替代密碼,它采用替換的方法將信息中的每個(gè)英文字符循環(huán)替換為字母表序列中該字符后面的第三個(gè)字符。把字符串中的每個(gè)英文字母加一個(gè)數(shù)字?k,變?yōu)槠浜竺娴牡?k?個(gè)字母,其中?k?表示算法密鑰,加密過(guò)程如圖?22-1?所示。圖?22-1加密過(guò)程3.算法設(shè)計(jì)(1)加密的算法設(shè)計(jì)將每個(gè)字母用它后面的第?k?個(gè)字母代替。例如,k?為?3?時(shí),A→D、a→d、B→E、b→e……當(dāng)加?k?后的字母超過(guò)?Z?或?z?時(shí),c=c+k-26。例如,“Youaregood”經(jīng)上述方法加密后的字符為“Brxduhjrrg”。(2)解密算法設(shè)計(jì)解密是加密的逆過(guò)程,將每個(gè)字母減去常數(shù)?k,即?c=c-k。例如,常數(shù)?k?為?3,這時(shí)?Z→W、z→w、Y→V、y→v……當(dāng)減去?k?后的字母小于?A?或?a時(shí),c=c-k+26。4.程序代碼#定義加密函數(shù),對(duì)字母進(jìn)行加密,即向后移動(dòng)?key?位,其他字符不加密defcipher(befmessage,key):aftmessage=''forcharinbefmessage:ifchar.isupper(): #對(duì)大寫(xiě)字母進(jìn)行加密code=ord('A')+(ord(char)-ord('A')+key)%26aftmessage=aftmessage+chr(code)elifchar.islower(): #對(duì)小寫(xiě)字母進(jìn)行加密code=ord('a')+(ord(char)-ord('a')+key)%26aftmessage=aftmessage+chr(code)else:aftmessage=aftmessage+char #字母以外的其他字符不進(jìn)行加密returnaftmessagemessage=input('請(qǐng)輸入明文:')key=int(input('請(qǐng)輸入密鑰(整數(shù)):')) #輸入數(shù)字密鑰secret=cipher(message,key)print('加密后的密文是:',secret)5.運(yùn)行結(jié)果輸入樣例如下。請(qǐng)輸入明文:Password123請(qǐng)輸入密鑰(整數(shù)):3輸出樣例如下。加密后的密文是:Sdvvzrug1236.思考與討論參照上面的加密程序,完成解密程序。7.問(wèn)題拓展字符串加密和解密有多種算法,下面介紹基于按位邏輯異或的簡(jiǎn)單加密算法和解密算法,算法原理如下。>>>ord('A')^ord('P')17>>>chr(17^ord('P'))'A'故基于按位邏輯異或的簡(jiǎn)單字符串加密算法和解密算法可以共用一個(gè)函數(shù),其設(shè)計(jì)思路如下。①給定字符串?text(例如?Artificialintelligencewillnotreplacehumans.)和?key(例如?Python123),使用?itertools.cycle(key)構(gòu)造一個(gè)循環(huán)字符串迭代器?keys。②循環(huán)處理?text?的每個(gè)字符,使用?keys?進(jìn)行按位邏輯異或運(yùn)算,結(jié)果就是加密后的密文(如果解密,結(jié)果就是解密后的明文)程序代碼如下。fromitertoolsimportcycledefcrypt(text,key):result=[]keys=cycle(key)forchintext:result.append(chr(ord(ch)^ord(next(keys))))return''.join(result)#測(cè)試代碼if__name__=='__main__':message='Artificialintelligencewillnotreplacehumans,onthecontrary.'key='Python123'print('加密前明文:{}'.format(message))encrypted=crypt(message,key)print('加密后密文:{}'.format(encrypted))decrypted=crypt(encrypted,key)print('解密后明文:{}'.fo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程人員工作總結(jié)(合集15篇)
- 山東省濟(jì)南市濟(jì)陽(yáng)區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期中生物學(xué)試題(含答案)
- 河北省辛集市2024-2025學(xué)年高二上學(xué)期期末考試歷史試題(含答案)
- 2025-2026年北京市中考英語(yǔ)綜合提高練習(xí)試卷1
- 《跨境電子商務(wù)雙語(yǔ)教程》第二版全套教學(xué)課件
- 漢字力課件教學(xué)課件
- 金融科技領(lǐng)域白皮書(shū)解讀
- 2025標(biāo)準(zhǔn)設(shè)備供應(yīng)合同范本
- 永州消防知識(shí)培訓(xùn)課件獲取途徑
- 永川市交通安全知識(shí)培訓(xùn)課件
- 2024年安全員C證模擬考試1000題(附答案)
- 高中語(yǔ)文課程標(biāo)準(zhǔn)-(修改版)
- K31作業(yè)現(xiàn)場(chǎng)安全隱患排除(K3)
- 港口基礎(chǔ)設(shè)施監(jiān)測(cè)技術(shù)
- 人教版小學(xué)五年級(jí)數(shù)學(xué)下冊(cè)《第五單元 圖形的運(yùn)動(dòng)(三)》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 全國(guó)中學(xué)教師《初中數(shù)學(xué)》說(shuō)課教學(xué)比賽-主題:《等腰三角形的性質(zhì)》說(shuō)課-一等獎(jiǎng)?wù)n件
- 2024年工會(huì)財(cái)務(wù)知識(shí)競(jìng)賽試題及答案
- 26個(gè)英語(yǔ)字母描紅練習(xí)(素材)-小學(xué)英語(yǔ)
- DL∕T 686-2018 電力網(wǎng)電能損耗計(jì)算導(dǎo)則
- 2023年河南省中考數(shù)學(xué)試卷及答案
- 中外民歌欣賞(高中音樂(lè)課件)
評(píng)論
0/150
提交評(píng)論