資源簡介 3.1 字符串 1課時(教學設計)年級 高二年級 授課時間 1課時課題 3.1 字符串教學 目標 1.通過實際問題,恰當地選擇字符串結構,并總結字符串的概念、特性及基本操作。 2.體驗用字符串解決問題的基本流程,逐步形成運用字符串結構解決問題的思維方式和學科方法。 3.熟練掌握字符串連接、切片等基本操作。教學 重難點 重點:1.字符串的概念和特性 2.字符串的基本操作 3.字符串的常用函數和方法 難點:字符串連接、切片等基本操作教學 準備 多媒體課件、多媒體教室教學過程教師活動 學生活動新 課 導 入 一、課堂導入 1.展示擁堵的城市交通圖,拋出問題:在限行規則下,如何快速獲取違章車輛。小組合作、討論、設計分析違章車輛的算法。 (1)車牌號有什么特點? (2)以哪種方式存儲車牌最佳 車牌號是由數字和字母組成的。 大量的有規律數據可以用字符串來存儲、處理相應的數據,實現對應的功能。 以生活實際為例,吸引學生參與課堂,拋出問題,讓學生思考并觀看教師的PPT課件上的圖片提示,從而引出本堂課的主題。新 知 講 授 字符串的概念與特性 1.概念 概念:字符串是由零個或多個字符組成的有限序列。 這些字符來自于某些特定的字符集,它包括大小寫英文字母、數字、 標點符號、控制字符等共128個字符。 字符集是多個字符的集合,種類較多。每個字符集包含的字符個數不同。常見的字符集有ASCII字符集、GB2312字符集、GBK字符集、BIG5字符集、GB18030字符集、Unicode字符集等。 字符串中所包含的字符個數稱為字符串的長度。 為了區分字符串與其他的標識符,字符串一般用雙引號或單引號加以界定,如字符串“Hello World”,它包含11個字符(不包括雙引號),其中空格也是一個字符。 在字符串的應用中,會涉及一些特殊的字符串。 ①空串:空串是不包含任何字符的串,其長度為零。 ②空格串:空格串是由空格組成的字符串,其長度為空格字符的個數。 一個字符串中任意個連續的字符序列稱為該字符串的子串。例如,字符串S為“HelloWorld”,字符串“H”,“He”,“el”,“ell”,“World”等都是S的子串。串S也是串S的子串。除S本身外,S的其他子串稱為S的真子串。 2.特性 (1)有限序列性 字符串是一種線性表結構。 數據元素個數是有限的。 由零個或多個字符組成。 可使用序列切片操作 除第一個和最后一個元素外,其他元素都有一個唯一的前驅和后繼,有正索引標號和負索引標號。 字符串“Hello World”的索引標號 (2)可比性 在排序、詞頻統計、查找文本等操作中,需要對字符串進行比較。 按ASCII碼值進行比較 根據編碼的方式進行比較 比如字符串“word”與“work”,前3個字符一樣,第4個字符“k”的ASCII碼值大于字符“d”的ASCII碼值,因此字符串“work”大于字符串“word”。當字符串中僅有數字字符時,采用同樣的比較方式,如“9”大于“10”。對于含有非ASCII字符集的字符串,需要根據編碼的方式進行比較。 (3)探討與討論 數組與字符串有哪些區別? ①定義不同:字符數組是用來存儲一系列字符的數組。字符串是由一系列字符組成的字符序列。 ②長度不同:字符數組的大小在編譯時就必須確定,大小固定不可變。字符串在編譯時并沒有確定大小,一般通過字符串長度來獲取它的長度。 ③元素不同:字符數組的元素是字符類型。字符串的元素是字符類型,并且在使用字符串時,除第一個元素外,其他元素都為'\0'。 ④存儲方式不同:字符數組一般通過數組下標的方式訪問。 ⑤功能不同:字符數組除了存儲字符外,還可以執行一些字符操作。字符串除了存儲字符外,還可以進行字符串的一些操作,如拼接、拷貝、截斷、連接等操作。 三、 字符串的基本操作 1.字符串的操作 字符串的操作可以實現從字符串中提取子串、將字符串轉換成小寫或大寫、字符串匹配等。 創建 常用單引號()、雙引號("")和三個單引號或雙引號來創建。 例如:var1 = 'Hello World!' var2 = "Python" (1)子串判斷 子串判斷用于檢查字符串a是否為字符串S的子串。 在Python中,可以用in運算實現,格式為“字符串a in 字符串S”。 當字符串S包含字符串a時,值為True,否則值為False。 Python程序展示 用in運算 (2)求子串 用于從字符串中取出其子串。 在Python中,可以用切片實現。 格式為“字符串[位置i:位置j]”。 S[i:j]表示取字符串S的索引下標i至j–1范圍內的子串 S[6:11]為取字符串S中第7個至第11個位置上的字符,得到子串“World”。 使用[]來截取字符串。即:序列的索引和切片操作。 格式為:字符串[start:stop:step],對字符串下標[start,stop)進行步長為step的提取 探討與討論: 已知字符串a"人生苦短,我用Python”,則下列說法正確的是( B ) A.a[5]的值為",",a[:5]的值為"人生苦短" B.a[5]的值為"我”,a[:5]的值為"人生苦短" C.a[-5]的值為"y",a[-5:]的值為" thon " D.a[-5]的值為"用",a[-5:]的值為"ython " (3)字符串的連接 用于把兩個字符串連接在一起。 在Python中,用“+”號連接符實現。 格式為“字符串S1+字符串S2”。 ①直接拼接 直接將兩個字符串常量緊挨著寫在一起就可以了。 例如:strname = "abc" "hig"- strname = “abchig” ②若有變量,則需【+】運算符拼接 【+】運算符也能拼接字符串常量 例如:str1=“Python” strname = str1 +“語言” strname = “Python語言” ③Python程序如下 Python中還內置了非常豐富的字符串函數與方法,可以直接調用。 (4)例題 ①例一:回文串 從左往右讀和從右往左讀都一樣的字符串稱為回文串,比如“客上天然居,居然天上客”。輸入一個字符串,寫一個程序,判斷該字符串是否為回文串。 根據回文串的特點,只要字符串左右對稱,它就是回文串。判斷字符串的左右對稱時,可以先找到中間位置,采用切片操作,取出字符串的左半部分,存儲到字符串變量left中;再采用切片操作,取出右半部分并反轉,存儲到字符串變量right中。若left與right相等,則為回文串。 用Python實現的程序如下: 可以直接利用Python語言中的字符串反轉命令[::–1],直接反轉原字符串,再與原字符串比較。程序如下: ②例二:機動車違章識別系統 隨著機動車數量的增長,一些城市為了緩解交通壓力,采取了錯峰出行的措施。錯峰出行,即劃定區域在工作日的上下班高峰時段內,禁止掛有外地車牌和車牌尾號是某些數字的本地車牌的車輛行駛。某城市(車牌城市代碼為城B)在工作日的7:00—9:00、16:30—18:30內,周一限行車牌數字尾號1和9,周二限行車牌數字尾號2和8,周三限行車牌數字尾號3和7,周四限行車牌數字尾號4和6,周五限行車牌數字尾號5和0,外地車牌全部限行。現有某個路口一周的車輛通行信息,部分信息如表3.1.3所示。請編寫程序,輸出違章車輛的車牌號碼和車主姓名。 部分車輛通行信息表 A.抽象與建模 外地車牌且行駛時間在周一至周五。 本地車牌且車牌數字尾號與限行數字尾號匹配。 B.設計算法 用字符串存儲 “車 牌號碼”,通過索引、字符串的比較等操作,確定車輛的城市代碼。如果是本地車牌,從右往左枚舉車牌號碼,找 到第一個數字,即為該車牌的數字尾號。再根據限行規則,與“星期”數據逐一比較。 ①用字符串變量car存儲“車牌號碼”,字符串變量name存儲“車主姓名”,數值變量 w存儲“星期”。 ②在字符串car中,取前2個字符,判斷是否為“城B”。若是“城B”,則為本地車 牌,執行③;否則,為外地車牌,執行④。 ③從右往左掃描字符串car,找到第一個數字,存入變量num中,代表車牌的數字尾 號。用week存儲限行的星期字符串“12345”,代表周一至周五,t存儲該車的數字尾號 在星期幾限行。根據數字尾號的限行規則,當num=0時,t=week[4] ;當1≤num≤5時,t=week[num–1] ;當num>5時,則t=week[9–num]。再將t與w值進行比較,若相等,則車 輛違章,輸出車牌號碼和車主姓名。 ④若w的值為6或7,則該車輛不違章;否則,車輛違章,輸出車牌號碼和車主姓名。 ⑤重復①、②、③、④操作,直至所有車輛處理完畢。 C.編寫程序 (5)課堂練習 ①有如下python程序段: s=“Python3.8” ans=“ ” for ch in s: if ch.isupper( ): ans+=ch.lower( ) elif ch.islower( ): ans+=ch.upper( ) else: ans+=ch print(ans) 則程序執行后,輸出的結果為( D ) A.Python B.Python3.8 C.pYTHON D.pYTHON3.8 ②有如下程序段: S=“2022 Hope To Get Out Of The Epidemic” t=“” for i in s: if i<“a” or i>“z”: t=”” t=i+t print(t) 該程序運行后,最后顯示的內容是( A ) A.cimedipE B.cimedip C.cimed D.cime ③有如下python程序段: a=input() t,s=0,0 for c in a[::-1]: if c.isdigit(): t=t*10+int(c) else: s+=t t=0 print(t) 當輸入“123ABC456”時,程序輸出結果為:( A ) A.321 B.654 C.123 D.975 四、課堂小結 通過實際問題,恰當地選擇字符串結構,并總結字符串的概念。(意圖:體現先學后教的理念。) 通過實際問題,恰當地選擇字符串結構,并總結字符串的特性。 通過課堂練習,加深同學們對字符串的理解。 通過實際問題,恰當地選擇字符串結構,并總結字符串的基本操作。 通過字符串的創建、判斷、求子串、連接的講解,然后再將字符串問題進行抽象化的展示,讓學生理解字符串如何解決實際中的問題,體驗用字符串解決問題的基本流程,逐步形成運用字符串結構解決問題的思維方式和學科方法。 通過案例講解:回文串, 體驗用字符串解決問題的基本流程,逐步形成運用字符串結構解決問題的思維方式和學科方法。 通過案例講解:機動車違章識別系統, 體驗用字符串解決問題的基本流程,逐步形成運用字符串結構解決問題的思維方式和學科方法。 用練習鞏固課堂知識,幫助學生更好地掌握。課 堂 練 習 (有題有答案有解析) 1.字符串是由 或 組成的有限序列。 2.字符串中的字符來自于某些特定的字符集,如ASCII(AmericanStandard Code for Information Interchange,美國信息交換標準碼)字符集,它包括 、 、 、 等共 個字符。 3.空串是不包含任何字符的串,其長度為 。 4.空格串是由 組成的字符串,其長度為 的個數。 5.字符串的特性包括: 、 。 6.字符串是一種 ,它的數據元素個數是 的,由零個或多個字符組成。 7.字符串的操作可以實現 、 、 等。 8.字符串的基本操作有 、 、 等。 9.已知字符串a"人生苦短,我用Python”,則下列說法正確的是( ) A.a[5]的值為",",a[:5]的值為"人生苦短" B.a[5]的值為"我”,a[:5]的值為"人生苦短" C.a[-5]的值為"y",a[-5:]的值為" thon " D.a[-5]的值為"用",a[-5:]的值為"ython " 10.下列Python字符串不合法的是:( ) A.”I love ‘China’” B.’I “love” China’ C.’I love \’China\’’ D.’I love ‘China” 11.有如下程序段: S=“2022 Hope To Get Out Of The Epidemic” t=“” for i in s: if i<“a” or i>“z”: t=”” t=i+t print(t) 該程序運行后,最后顯示的內容是( ) A.cimedipE B.cimedip C.cimed D.cime 12.有如下Python程序段: a=”Beautiful is better than ugly.”.split() b=””.join(a) 則下列說法正確的是:( ) A.a[4]的值為“ugly”,b[4]的值為“t” B.a[4]的值為“ugly.”,b[4]的值為“t” C.a[-4]的值為“is”,b[-4]的值為“u” D.a[-4]的值為“Beautiful”,b[-4]的值為“g” 13.有如下python 程序段: def fun(a,b): n=min(len(a),len(b)) for i in range(n): if a[i]>b[i]: return a elif a[i]len(b): return a else: return b print(fun(“126”,”26”)) 則程序執行后,輸出的結果為:( ) A.a B.b C.126 D.26 參考答案: 1.零個、多個字符 2.大小寫英文字母、數字、標點符號、控制字符等、128 3.零 4.空格、空格字符 5.有限序列性、可比性 6.線性表結構、有限 7.從字符串中提取子串、將字符串轉換成小寫或大寫、字符串匹配 8.子串判斷、求子串、字符串的連接 9.答案:C [解析]a[5]表示字符串中的第6個字符,本題中a[5]為“我”。a[:5]表示取從第一個字符開始到下標為4的字符串,值為“人生苦短,”。AB選項錯誤。α[—5]表示從右往左數第5個字符,值為“y”。a[—5 :]表示從右往左數第5個字符開始到結束的字符串,值為“gthon”。 10.答案:D [解析]字符串一般采用單引號、雙引號或三引號加以界定。當使用單引號時,雙引號可以作為字符串中的一部分,反之亦然;也可以使用反斜杠轉義符輸出單引號或雙引號。 11.答案:A [解析]該程序中語句“if i<“a” or i>“z”:;t=“””的功能是字符i為非小寫字母時,變量t就清空。因此在“Epidemic”出現前,變量t中的內容為空。這樣變量t中最后的內容為“Epidemic”的重新組合。語句t=i+t的功能就是將“Epidemic”進行逆向組合。 12.答案:B [解析]a[4]的值為“ugly.”;b[4]的值為“t”;a[-4]的值為“is”;b[-4]的值為“g”。 13.答案:D [解析]自定義函數fun()的功能是比較字符串a 和b的大小,并返回較大的字符串,因為“126”<“26”,故返回“26”。課 堂 小 結 課堂小結 1.字符串的概念與特性 (1)字符串的概念 (2)字符串的特性 ①有限序列性 ②字符串的可比性 2.字符串的基本操作 (1)子串判斷 (2)求子串 (3)字符串的連接作 業 設 計 1.有如下python程序段: a=input() t,s=0,0 for c in a[::-1]: if c.isdigit(): t=t*10+int(c) else: s+=t t=0 print(t) 當輸入“123ABC456”時,程序輸出結果為: ( ) A.321 B.654 C.123 D.975 2.有如下Python程序段: text=”床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。” text=text.replace(“。”,“,”) ans=[s[0] for s in text.split(“,”) if s] ans=“”.join(ans) 則程序執行后,ans的值為( ) A.“床前明月光” B.“床前明月” C.“床疑舉低” D.”舉頭望明” 3.有如下python程序段: text=“It is too old to learn.” ans=text[:6]+“never”+text[6:] print(ans) 則程序執行后,輸出的結果為( ) A.It is too old to learn B.It is never too old to learn C.It is nevertoo old to learn D.It isnever too old to learn 4. 有如下Python程序段: for ch in “I have a dream”: if ch not in”aoeiu”: continue print(ch,end=””) 則程序執行后,輸出的結果是( ) A.無輸出 B.I have a dream C.I hv drm D.aeaea 5. 有如下python程序段: s=“Python3.8” ans=“” for ch in s: if ch.isupper(): ans+=ch.lower() elif ch.islower(): ans+=ch.upper() else: ans+=ch print(ans) 則程序執行后,輸出的結果為( ) A.Python B.Python3.8 C.pYTHON D.pYTHON3.8 6. 有如下程序段: s=”” ch=”GaozhouKG2021” n=len(ch) for i in range(1,n,2): c=ch[i] if “A”<=c<=“Z”: c=chr((ord(c)-ord(“A”)+2)%26+65) elif “a”<=c<=“z”: c=chr((ord(c)-ord(“a”)+2)%26+97) else: c=chr(ord(c)+1) s=c+s print(s) 該程序運行后,最后顯示的內容為( ) A.IqjwI12 B.21IwjqI C.cbqM33 D.33Mqbc 7.有如下python程序段: a=“110000010111010” if len(a)%4!=0: a=(4-len(a)%4)*“0”+a) s=“0123456789ABCDEF” ans=[] for i in range(0,len(a),4): num=int(a[i:i+4],2) ans.append(s[num]) print(‘’.join(ans)) 已知int()函數用于將一個字符串或數字轉換為整型,例如 int(“101”,2)用于將二進制數101轉換為十進制數,結果為5,則程序執行后,輸出的結果為( ) A.60BA B.C174 C.182E8 D.305D反 思 評 價 本堂課講解的是理論方面的知識,比較枯燥,只有通過大量的舉例來充實課堂。通過列舉實例,分析字符串概念和特性,讓學生們通過實際問題,恰當地選擇字符串結構,并總結字符串的概念、特性及基本操作。體驗用字符串解決問題的基本流程,逐步形成運用字符串結構解決問題的思維方式和學科方法。最終能夠熟練掌握字符串連接、切片等基本操作。 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫