第0關(guān) print()函數(shù)與變量-千與千尋的名字 課程目標(biāo) - 了解python:用途、組成
- 熟練使用函數(shù):print()
- 掌握換行的三種方法
- 了解變量的意義,熟練給變量賦值
- 認(rèn)識(shí)轉(zhuǎn)義字符,了解轉(zhuǎn)義字符的使用方法
課程難點(diǎn) - print()函數(shù)以及引號(hào)的使用
- 換行的兩種簡便方法
- 區(qū)分賦值與等于
課程重要內(nèi)容重現(xiàn) 一、最基本的一條代碼 1. print()函數(shù) print()函數(shù)由兩部分構(gòu)成: - 指令的執(zhí)行對(duì)象:在print后面的括號(hào)里的內(nèi)容
2. 引號(hào)的用法 單引號(hào)和雙引號(hào)都可以使用,但需要匹配,并且配合使用可以區(qū)分開原文和print()函數(shù)的結(jié)構(gòu)。例如,print(“Let’s go”),雙引號(hào)的作用是函數(shù)結(jié)構(gòu),單引號(hào)是英文語法。 不用引號(hào)時(shí),括號(hào)內(nèi)必須是數(shù)字或者數(shù)字運(yùn)算,這是計(jì)算機(jī)可以理解的內(nèi)容。例如:print(1 1),最后輸出是2。 注意:python中所有的符號(hào)都是英文狀態(tài)下的,并且會(huì)區(qū)分大小寫。 二、換行 - 重復(fù)使用print()函數(shù),將不同行的語句放在不同的函數(shù)中輸出。(事倍功半)
- 使用三引號(hào):用三引號(hào)將需要分行的內(nèi)容括起來,并且在引號(hào)內(nèi)使用回車進(jìn)行段落排版。例如:
print('''我愿意留在湯婆婆的澡堂里工作兩年, 第一年在鍋爐房和鍋爐爺爺一起燒鍋爐水, 第二年在澡堂給客人搓背, 如果我違背工作內(nèi)容的話, 將在這個(gè)世界變成一頭豬。''') - 使用\n,此時(shí)是不允許回車換行的!例如:
print('我愿意留在湯婆婆的澡堂里工作兩年,\n第一年在鍋爐房和鍋爐爺爺一起燒鍋爐水,\n第二年在澡堂給客人搓背,\n如果我違背工作內(nèi)容的話,\n將在這個(gè)世界變成一頭豬。') 三、轉(zhuǎn)義字符 對(duì)于可作為結(jié)構(gòu)性符號(hào)的,例如單引號(hào),感嘆號(hào),若想直接使用,可在符號(hào)前加一個(gè)反斜線\。則對(duì)于之前的例子:print(“Let’s go”),也可以寫作print(‘Let\’s go’),中間的單引號(hào)由于使用了反斜線,所以作為整條語句的內(nèi)容而不是print()函數(shù)的結(jié)構(gòu)。 四、變量與賦值 - 變量是我們自己創(chuàng)建的,命名要求:
- 只能是一個(gè)詞
- 只能包含字母、數(shù)字、下劃線(下劃線可以用于連接多詞)
- 不能以數(shù)字開頭
- 盡量描述包含的數(shù)據(jù)內(nèi)容(抽象概括存儲(chǔ)的內(nèi)容)
代碼中的=(等號(hào))是用于賦值而邏輯上的等于要使用兩個(gè)等號(hào),即1 1==2。 變量的特點(diǎn):保存的數(shù)據(jù)是可以隨意變化的,儲(chǔ)存的值永遠(yuǎn)都是最新的那個(gè)。例如: name='魔法少女千醬' name='夏目千千' name='千尋' print(name) 這段代碼輸出是結(jié)果是‘千尋’ ———————— 反饋: - 按照修改過的格式進(jìn)行編寫
- 重點(diǎn)和難點(diǎn)進(jìn)行區(qū)別
- 課程步驟不需要重現(xiàn),提取關(guān)鍵信息進(jìn)行闡釋即可
第1關(guān) 數(shù)據(jù)類型與轉(zhuǎn)換-萌新的進(jìn)化 課程目標(biāo) - 熟練掌握三種數(shù)據(jù)類型及其轉(zhuǎn)換
- 掌握數(shù)據(jù)拼接的方法
- 了解查詢數(shù)據(jù)類型的type()函數(shù)
課程難點(diǎn) - 區(qū)分字符串下的數(shù)字與整數(shù)、浮點(diǎn)數(shù)下的數(shù)字
- 使用【 】進(jìn)行數(shù)據(jù)拼接時(shí),連接的數(shù)據(jù)類型必須為同數(shù)據(jù)類型
- 使用函數(shù)進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換時(shí),int()與float()函數(shù)括號(hào)內(nèi)的數(shù)據(jù)必須為純數(shù)字型文本
課程重要內(nèi)容重現(xiàn) 一、常見的三種數(shù)據(jù)類型 1、字符串 特點(diǎn):被引號(hào)括起來的文本。(注意引號(hào)要使用英文狀態(tài)下的單引號(hào)或者雙引號(hào)、三引號(hào)) 例: slogan = '命運(yùn)!不配做我的對(duì)手!' attack = '308' gold = '48g' blood = ''' 101''' achieve = 'First Blood!' 先將內(nèi)容以字符串形式賦值給變量,最后使用print()函數(shù)輸出變量即可。 2、整數(shù) 整數(shù)英文為integer,簡寫做int。是正整數(shù)、負(fù)整數(shù)和零的統(tǒng)稱,是沒有小數(shù)點(diǎn)的數(shù)字。 特點(diǎn):無需配合引號(hào)使用,可進(jìn)行計(jì)算。如:108(整數(shù))‘108’(字符串)‘6小靈童’(字符串)但若存在文字類數(shù)據(jù),則必須使用引號(hào),將其變?yōu)樽址愋?。例?/p> print(6小靈童) print(6skr) #打印數(shù)據(jù)
SyntaxError: invalid syntax #終端顯示結(jié)果:報(bào)錯(cuò):無效語法 具體的計(jì)算符號(hào):(優(yōu)先級(jí)與日常算數(shù)一致) 
3、浮點(diǎn)數(shù) 相對(duì)于整數(shù)而言,浮點(diǎn)數(shù)就是帶小數(shù)點(diǎn)的數(shù)字。英文名是float,與整數(shù)int()和字符串str()不同,浮點(diǎn)數(shù)沒有簡寫。 二、查詢數(shù)據(jù)類型——type()函數(shù) 作用:查詢數(shù)據(jù)類型 例:print(type('查詢內(nèi)容')) achieve = 'Penta Kill' print(type(achieve))
#結(jié)果顯示:<class 'str'> 三、數(shù)據(jù)拼接 利用數(shù)據(jù)拼接符號(hào)【 】,將需要拼接的變量連在一起。注意:變量內(nèi)的數(shù)據(jù)類型必須為字符串型才可進(jìn)行拼接!如: hero = '亞瑟' enemy = '敵方' action = '團(tuán)滅' gain = '獲得' achieve = 'ACE稱號(hào)' #結(jié)果顯示為 #亞瑟團(tuán)滅敵方獲得ACE稱號(hào)
print(hero action enemy gain achieve) hero = '亞瑟' enemy = '敵方' action = '秒殺' gain = '獲得' number = 5 achieve = 'Penta Kill'
print(hero action number enemy gain achieve)
#結(jié)果顯示報(bào)錯(cuò):TypeError:can only concatenate str (not 'int') to str #類型錯(cuò)誤:只能將字符串與字符串拼接 四、數(shù)據(jù)類型轉(zhuǎn)換 1、轉(zhuǎn)換為字符串類型 str()函數(shù)能將數(shù)據(jù)轉(zhuǎn)換成其字符串類型。只要將所需數(shù)據(jù)放到括號(hào)里,這個(gè)數(shù)據(jù)就能成為字符串類型。 用引號(hào)將數(shù)據(jù)括起來也能達(dá)到同樣結(jié)果。 例如: hero = '亞瑟' enemy = '敵方' action = '秒殺' gain = '獲得' number = 5 achieve = 'Penta Kill'
print(hero action str(number) enemy gain achieve) print(hero action '5' enemy gain achieve) #使用str()函數(shù)將變量number里的數(shù)字5變成了字符串5。 2、轉(zhuǎn)換為整數(shù) int()函數(shù)的使用,與str()類似。注意一點(diǎn):只有符合整數(shù)規(guī)范的字符串類數(shù)據(jù),才能被int()強(qiáng)制轉(zhuǎn)換。 print(int('3.8'))
#運(yùn)行后顯示結(jié)果:ValueError:invalid literal for int() with base 10: '3.8' 小數(shù)型字符串會(huì)直接報(bào)錯(cuò),而浮點(diǎn)數(shù)會(huì)被強(qiáng)制轉(zhuǎn)換: print(int(3.8))
#運(yùn)行后結(jié)果顯示:3 也就是說,對(duì)于浮點(diǎn)數(shù),int()會(huì)保留其整數(shù)部分。注意:不是四舍五入! 3、轉(zhuǎn)換為浮點(diǎn)數(shù) float()函數(shù)的使用與int()、str()類似。如果括號(hào)里面的數(shù)據(jù)是字符串類型,那這個(gè)數(shù)據(jù)一定得是數(shù)字形式。 第2關(guān) 條件判斷與條件嵌套-滅霸的選擇 課程目標(biāo) - 熟練掌握if條件判斷語句,包括單向、雙向以及多向判斷。
- 熟悉語句間的級(jí)別關(guān)系,不同級(jí)別之間要有縮進(jìn)
- 熟悉計(jì)算機(jī)執(zhí)行指令的順序,能看懂并得出代碼輸出結(jié)果以及寫出if嵌套語句
課程難點(diǎn) - 邏輯判斷應(yīng)使用邏輯符號(hào)等于【==】
- 條件語句后一定要記得接冒號(hào)【:】,注意觀察冒號(hào)之后的語句是否縮進(jìn)以及同級(jí)別的語句是否在格式上處于并列狀態(tài)。
- 在執(zhí)行變量的判斷之前,要注意變量是否已經(jīng)被賦值
課程重要內(nèi)容重現(xiàn) 一、條件判斷 即中文邏輯語句“如果...就...”。在進(jìn)行判斷之前,一定要先對(duì)變量進(jìn)行賦值!條件判斷就是針對(duì)不同的可能性,進(jìn)行不同操作。賦值情況的前提不滿足if的條件時(shí),自動(dòng)跳過,執(zhí)行下一行命令。 其次,每一個(gè)判斷語句之后要使用冒號(hào)【:】,表示接下來的內(nèi)容是只有滿足條件才運(yùn)行的。若不是條件下的語句,要記得刪除縮進(jìn)。 1、單向判斷 要是if之后的條件不滿足,就跳過if語句進(jìn)行下一命令。格式: if xxx(判斷的條件): 如果滿足上述條件,就執(zhí)行的操作語句 2、雙相判斷 要是if之后的條件不滿足,就執(zhí)行else里的。if與else平級(jí)(縮進(jìn)一致,在else前必須有一個(gè)平級(jí)的前提)。每一個(gè)條件不能有重合部分,是互斥的,格式: if xxx(判斷的條件): 如果滿足上述條件,就執(zhí)行的操作語句 else: 如果不滿足if之后的語句,就執(zhí)行的操作語句 weight=101 #要先為醬醬的體重賦值,醬醬的體重是101斤
if weight>100: #如果體重超過100斤的條件下,就……(條件后需加冒號(hào)) print('不吃了') #就打印結(jié)果:不吃了!(注意檢查是否自動(dòng)縮進(jìn)) else: #如果體重沒有超過100斤的條件,就……(else條件前無縮進(jìn),條件后需加冒號(hào)) print('放心吃吧') #就打?。悍判某园?注意檢查是否自動(dòng)縮進(jìn)) 3、多向判斷 if、elif和else平級(jí)。可以存在多個(gè)elif,數(shù)量根據(jù)整體能分成的所需選項(xiàng)數(shù)來定。注意:每一個(gè)條件不能有重合部分,是互斥的,即x<10與9<x<15,這樣的兩個(gè)條件是不可行的。如果不滿足if的條件,就判斷是否滿足elif下的條件,若所有elif的條件都不滿足,就執(zhí)行else下的語句。并且elif之后可以不接else,格式: if xxx(判斷的條件): 如果滿足上述條件,執(zhí)行的操作語句 elif xxx(與前一個(gè)if互斥的另一個(gè)條件): 如果滿足elif后的條件,就需要執(zhí)行的語句 else: 若if、elif后面的條件都不滿足,則會(huì)執(zhí)行的語句 stonenumber=1 #一定要先為寶石數(shù)量賦值
if stonenumber>=6: #注意冒號(hào) #條件:如果你擁有的寶石數(shù)量大于等于6個(gè) print('你擁有了毀滅宇宙的力量') #注意縮進(jìn) elif 3<stonenumber<=5: #條件:如果寶石數(shù)量在4至5個(gè) print('紅女巫需要親手毀掉幻視額頭上的心靈寶石') else: #條件:當(dāng)賦值不滿足if和elif條件時(shí),執(zhí)行else下的命令,即寶石數(shù)量在3個(gè)以下 print('需要驚奇隊(duì)長逆轉(zhuǎn)未來') 二、if嵌套 在基礎(chǔ)條件滿足的情況下,再在基礎(chǔ)條件底下增加額外的條件判斷。在編寫if嵌套語句時(shí),同樣的,可以按照框架,從大到小,依次往不同的大條件中補(bǔ)充額外條件。 historyscore=26 if historyscore>=60: print('你已經(jīng)及格') if historyscore>=80: print('你很優(yōu)秀') else: print('你只是一般般') else: print('不及格') if historyscore<30: print('學(xué)渣') else: print('還能搶救一下') print('程序結(jié)束') #結(jié)果顯示為 : #不及格 #學(xué)渣 #程序結(jié)束
每一個(gè)級(jí)別下的條件都只能執(zhí)行一個(gè)?。ɑコ猓〆lif與if類似。  第3關(guān) input()函數(shù)-霍格沃茨來信 課程目標(biāo) - 理解輸入函數(shù)input()的意義
- 熟練掌握input()函數(shù)返回的數(shù)據(jù)類型,以及結(jié)果賦值、數(shù)據(jù)類型轉(zhuǎn)換的方法
課程難點(diǎn) - input()函數(shù)括號(hào)內(nèi)的內(nèi)容會(huì)被輸出,但需要輸入對(duì)應(yīng)數(shù)據(jù)才能繼續(xù)執(zhí)行之后代碼
- input()函數(shù)的結(jié)果必須賦值給變量,且數(shù)據(jù)類型為字符串型
課程重要內(nèi)容重現(xiàn) input()函數(shù) 1、定義 input()函數(shù)是輸入函數(shù),與print()函數(shù)類似,input()函數(shù)括號(hào)里面的內(nèi)容是會(huì)顯示出來的,但不同在于我們需要輸入對(duì)應(yīng)的內(nèi)容,回車后才能繼續(xù)運(yùn)行。 2、input()函數(shù)賦值 在括號(hào)內(nèi)用引號(hào)括起提示語,例: input('請(qǐng)鏟屎官輸入寵物的名字:') #運(yùn)用input函數(shù)搜集信息 輸入的內(nèi)容被儲(chǔ)存在計(jì)算機(jī)內(nèi),需要將結(jié)果賦值給變量。例: print('那么,您的選擇是什么?'1'接受,還是'2'放棄呢?') choice = input('請(qǐng)輸入您的選擇:') #變量賦值 if choice == '1': print('霍格沃茨歡迎你的到來') else: print('您可是被梅林選中的孩子,我們不接受這個(gè)選項(xiàng)。) 3、input()函數(shù)的數(shù)據(jù)類型 對(duì)于input()函數(shù)來說,不管輸入的是整數(shù)1234,還是字符串‘我愛摩卡’,input()函數(shù)的輸入值(搜集到的回答),永遠(yuǎn)會(huì)被強(qiáng)制性地轉(zhuǎn)換為字符串類型。(Python3固定規(guī)則)所以,不管我們?cè)诮K端區(qū)域輸入什么,input()函數(shù)的返回值一定是字符串,將結(jié)果賦值給變量后,變量的數(shù)據(jù)類型也一定是字符串。 4、input()函數(shù)的數(shù)據(jù)類型轉(zhuǎn)換 使用數(shù)據(jù)類型轉(zhuǎn)換函數(shù),int(),float()可以從源頭強(qiáng)制轉(zhuǎn)換為對(duì)應(yīng)類型。但是要注意,此時(shí)的input()函數(shù)返回值一定要是純數(shù)字型!例: money = int(input('你一個(gè)月工資多少錢?')) #將輸入的工資數(shù)(字符串),強(qiáng)制轉(zhuǎn)換為整數(shù)
if money >= 10000: #當(dāng)工資數(shù)(整數(shù))大于等于10000(整數(shù))時(shí) print('土豪我們做朋友吧!') #打印if條件下的結(jié)果
else: #當(dāng)工資數(shù)(整數(shù))小于等于10000(整數(shù))時(shí) print('我負(fù)責(zé)賺錢養(yǎng)家,你負(fù)責(zé)貌美如花~') #打印else條件下 注:輸入值會(huì)運(yùn)用到計(jì)算時(shí),千萬記得用int()轉(zhuǎn)換! 第4關(guān) 列表和字典-收納的藝術(shù) 課程目標(biāo) - 熟練掌握列表、字典中元素的增刪改查
- 理解列表和字典的區(qū)別
課程難點(diǎn) - 列表與字典增刪改查的異同
- 正確使用切片,深刻理解切片時(shí)冒號(hào)左右數(shù)字的意義
課程重要內(nèi)容重現(xiàn) 一、列表 - 代碼格式
students是列表名,數(shù)據(jù)存儲(chǔ)在中括號(hào)[]里,用逗號(hào)隔開并使用等號(hào)賦值給列表。中括號(hào)里面的每一個(gè)數(shù)據(jù)叫作“元素”。 列表中的元素是有自己明確的“位置”的,元素相同,在列表中排列順序不同,就是兩個(gè)不同的列表。 列表中字符串、整數(shù)、浮點(diǎn)數(shù)都可以存儲(chǔ)。 - 提取元素
1)、偏移量:元素在列表中的編號(hào)。 - 列表名后加帶偏移量的中括號(hào),就能取到相應(yīng)位置的元素。
2)、切片:用冒號(hào)來截取列表元素的操作。 - 冒號(hào)左邊空(或者為0), :m,表示從頭取m個(gè)元素;
- 右邊空(或者為0),n: ,跳過前n個(gè)元素把剩下的取完;
- 冒號(hào)左右都有數(shù)字時(shí),n:m,表示跳過前n個(gè)元素,取到第m個(gè)。(取出前m個(gè)元素中除了前n個(gè)后剩下的那些)
切片截取了列表的一部分,所以得到的結(jié)果仍然是一個(gè)列表。(即使只有一個(gè)元素,也是在列表里的,與用偏移量取單個(gè)元素區(qū)別開) students = ['小明','小紅','小剛'] print(students[2]) #使用偏移量提取單一元素,結(jié)果顯示: #小剛 print(students[2:]) #使用切片,即使結(jié)果仍然只有一個(gè)元素,但顯示為列表: #['小剛'] 3)特別地,a,b,c=students,也可以提取出列表中的元素,變量分別用逗號(hào)隔開,且變量的數(shù)量與列表元素?cái)?shù)一致,最終列表元素會(huì)分別賦值給變量,例如: appetizer = ['話梅花生','拍黃瓜','涼拌三絲'] a,b,c=appetizer
print(a) print(b) print(c) print(a,b,c) #結(jié)果顯示為 #話梅花生 #拍黃瓜 #涼拌三絲 #話梅花生 拍黃瓜 涼拌三絲 - 增加/刪除元素
1)增加元素 列表名.append()。注意這里是.不是空格! append后的括號(hào)里只能接受一個(gè)參數(shù),結(jié)果是讓列表末尾新增一個(gè)元素。列表長度可變,理論容量無限,所以支持任意的嵌套。 list3 = [1,2] list3.append(3) print(list3) #添加‘3’這個(gè)元素 #結(jié)果顯示: #[1,2,3]
list3.append(4,5) list3.append([4,5]) print(list3) #添加‘[4,5]’這個(gè)列表,也就是append()的參數(shù)為一個(gè)列表,也是一個(gè)參數(shù),所以不會(huì)報(bào)錯(cuò) #結(jié)果顯示: #[1,2,3,[4,5]] 但是append(4,5)會(huì)報(bào)錯(cuò),因?yàn)榻o了兩個(gè)元素(沒有作為一個(gè)整體,所以算兩個(gè)參數(shù))。注意!!千萬不能:a=student.append(3)。 2)刪除元素 del 列表名[元素的索引] 。注意這里是空格不是.了! 與append()函數(shù)類似,能刪除單個(gè)元素、多個(gè)元素(切片)、整個(gè)列表。 3)修改元素 使用偏移量修改對(duì)應(yīng)位置的元素。 list1 = ['小明','小紅','小剛','小美'] list1[1] = '小藍(lán)' print(list1) #結(jié)果顯示 #['小明','小藍(lán)','小剛','小美'] 二、字典 - 代碼格式
- 字典外層是大括號(hào){},用等號(hào)賦值;
- 列表中的元素是自成一體的,而字典的元素是由鍵值對(duì)構(gòu)成的,用英文冒號(hào)連接。有多少個(gè)鍵值對(duì)就有多少個(gè)元素。如'小明':95,其中我們把'小明'叫鍵(key),95叫值(value)。
所存儲(chǔ)的兩種數(shù)據(jù)若存在一一對(duì)應(yīng)的情況,用字典儲(chǔ)存會(huì)更加方便。唯一的鍵和對(duì)應(yīng)的值形成的整體,我們就叫做【鍵值對(duì)】。鍵具備唯一性,而值可重復(fù)。 字典中數(shù)據(jù)是隨機(jī)排列的,調(diào)動(dòng)順序也不影響。所以列表有序,要用偏移量定位;字典無序,便通過唯一的鍵來取值。 (注:len()函數(shù)用于獲取數(shù)據(jù)長度) students = ['小明','小紅','小剛'] scores = {'小明':95,'小紅':90,'小剛':90} print(len(students)) print(len(scores)) #結(jié)果顯示 #3 #3 #字典的元素個(gè)數(shù),數(shù)冒號(hào)就行了 - 提取元素
字典沒有偏移量,所以在提取元素時(shí),中括號(hào)中應(yīng)該寫鍵的名稱,即字典名[字典的鍵]。提取出來的是key對(duì)應(yīng)的value,而不會(huì)顯示鍵的數(shù)據(jù)! scores = {'小明': 95, '小紅': 90, '小剛': 90} print(scores['小明']) - 增加/刪除元素、
1)新增元素 字典名[鍵] = 值。每次只能新增一個(gè)鍵值對(duì)。scores['小剛','小美']=92,85,這樣是不對(duì)的,最終會(huì)輸出('小剛','小美':(92,85))作為一個(gè)鍵值對(duì)。 album = {'周杰倫':'七里香'} album['王力宏'] ='心中的日月' album['林俊杰'] = '小酒窩' print(album) print(album['周杰倫']) #結(jié)果顯示 #{'周杰倫':'七里香','王力宏':'心中的日月','林俊杰':'小酒窩'} #七里香 2)刪除元素 del 字典名[鍵] album = {'周杰倫':'七里香','王力宏':'心中的日月'} del album['周杰倫'] print(album) #結(jié)果顯示 #{'王力宏':'心中的日月'} 3)修改元素 如果不是整個(gè)鍵值對(duì)都不需要,只需要改變對(duì)應(yīng)key下的value,修改就可以,不需要del。 dict1 = {'小明':'男'} dict1['小明'] = '女' print(dict1) #字典沒有偏移量,只能通過key找到元素位置 三、列表與字典的嵌套 - 列表與列表
列表中有兩個(gè)列表元素,[1]表示取第二個(gè)元素(列表),[2]表示取第二個(gè)元素中的第三個(gè)元素(偏移量為2)。 student=[['小紅','小黃','小橙'],['小綠','小藍(lán)','小紫','小青']] print(student[1][2]) #結(jié)果顯示為 #小紫 - 字典與字典
字典中存儲(chǔ)了兩個(gè)字典,所以提取數(shù)據(jù)時(shí)只能用key值。 scores={'第一組':{'小明':95,'小紅':96},'第二組'{'小剛':94',小青':99}} print(scores['第一組']['小紅']) #結(jié)果顯示: #96 - 列表與字典
使用偏移量從最外層括號(hào)到最內(nèi)層括號(hào)取數(shù)。查找townee列表中的第六個(gè)元素中的第2個(gè)元素(一定是字典,因?yàn)橹笥玫氖擎I值而不是偏移量)中key為'反面角色'的value。 townee = [ {'海底王國':['小美人魚''海之王''小美人魚的祖母''五位姐姐'],'上層世界':['王子','鄰國公主']}, '丑小鴨','堅(jiān)定的錫兵','睡美人','青蛙王子', [{'主角':'小紅帽','配角1':'外婆','配角2':'獵人'},{'反面角色':'狼'}] ] print(townee[5][1]['反面角色']) 
|